Longest common substring in linear timeComputing the longest common substring of two strings using suffix arraysFind longest common substring using a rolling hashWhich algorithm to use to find all common substring (LCS case) with really big stringsFinding the longest repeating subsequenceHow to find longest recurring pattern from lage string data set?Longest substring with consecutive repetitionsDoes the Longest Common Subsequence problem reduce to its binary version?Substring problems in suffix treesNumber of optimal solutions for Longest Common Subsequence (Substring) problemLongest common sequence matrix giving wrong answer

How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?

Are paving bricks differently sized for sand bedding vs mortar bedding?

Longest common substring in linear time

Has any country ever had 2 former presidents in jail simultaneously?

On a tidally locked planet, would time be quantized?

How to indicate a cut out for a product window

GraphicsGrid with a Label for each Column and Row

Drawing ramified coverings with tikz

Are the IPv6 address space and IPv4 address space completely disjoint?

Creepy dinosaur pc game identification

Aragorn's "guise" in the Orthanc Stone

Is the U.S. Code copyrighted by the Government?

What does chmod -u do?

Offered money to buy a house, seller is asking for more to cover gap between their listing and mortgage owed

The IT department bottlenecks progress. How should I handle this?

The screen of my macbook suddenly broken down how can I do to recover

dpdt switch to spst switch

Biological Blimps: Propulsion

Not using 's' for he/she/it

Delivering sarcasm

Start making guitar arrangements

If infinitesimal transformations commute why dont the generators of the Lorentz group commute?

How do I color the graph in datavisualization?

Is there any references on the tensor product of presentable (1-)categories?



Longest common substring in linear time


Computing the longest common substring of two strings using suffix arraysFind longest common substring using a rolling hashWhich algorithm to use to find all common substring (LCS case) with really big stringsFinding the longest repeating subsequenceHow to find longest recurring pattern from lage string data set?Longest substring with consecutive repetitionsDoes the Longest Common Subsequence problem reduce to its binary version?Substring problems in suffix treesNumber of optimal solutions for Longest Common Subsequence (Substring) problemLongest common sequence matrix giving wrong answer













2












$begingroup$


We know that the longest common substring of two strings can be found in O(N^2) time complexity.
Can a solution be found in only linear time?










share|cite|improve this question











$endgroup$
















    2












    $begingroup$


    We know that the longest common substring of two strings can be found in O(N^2) time complexity.
    Can a solution be found in only linear time?










    share|cite|improve this question











    $endgroup$














      2












      2








      2





      $begingroup$


      We know that the longest common substring of two strings can be found in O(N^2) time complexity.
      Can a solution be found in only linear time?










      share|cite|improve this question











      $endgroup$




      We know that the longest common substring of two strings can be found in O(N^2) time complexity.
      Can a solution be found in only linear time?







      algorithms time-complexity strings longest-common-substring






      share|cite|improve this question















      share|cite|improve this question













      share|cite|improve this question




      share|cite|improve this question








      edited 3 hours ago









      Discrete lizard

      4,44011537




      4,44011537










      asked 3 hours ago









      Manoharsinh RanaManoharsinh Rana

      917




      917




















          3 Answers
          3






          active

          oldest

          votes


















          2












          $begingroup$

          Yes, the longest common substring of two strings can be found in $O(m+n)$ time, where $m$ and $n$ are the lengths of the two strings, assuming the size of the alphabet is constant.



          Here is an excerpt from https://en.wikipedia.org/wiki/Longest_common_substring_problem.




          The longest common substrings of a set of strings can be found by building a generalized suffix tree for the strings, and then finding the deepest internal nodes which have leaf nodes from all the strings in the subtree below it.




          Building a generalized suffix tree for two given strings takes $Theta(m+n)$ time using the famous ingenious Ukkonen's algorithm. Finding the deepest internal nodes that come from both strings takes $Theta(m+n)$ time. Hence we can find the longest common substring in $Theta(m+n)$ time.






          share|cite|improve this answer









          $endgroup$




















            1












            $begingroup$

            It is unlikely that that a better algorithm than quadratic exists, let alone linear. For the related problem of finding subsequences, this is a known result: In the paper "Tight hardness results for LCS and other sequence similarity measures." by Abboud et al. , they show that the existence of an algorithm with a running time of $O(n^2-varepsilon)$, for some $varepsilon>0$ refutes the Strong Exponential Time Hypothesis (SETH).



            SETH is considered to be very likely true (although not universally accepted), so it is unlikely any $O(n^2-varepsilon)$ time algorithm exists.




            While finding a substring is a slightly different problem, it seems likely to be equally hard.






            share|cite|improve this answer











            $endgroup$












            • $begingroup$
              are you talking about subsequence? I am talking about substring.
              $endgroup$
              – Manoharsinh Rana
              2 hours ago











            • $begingroup$
              @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
              $endgroup$
              – Discrete lizard
              2 hours ago










            • $begingroup$
              Longest common substring is much easier than longest common subsequence. See my answer.
              $endgroup$
              – D.W.
              1 hour ago


















            1












            $begingroup$

            Yes. There's even a Wikipedia article about it! https://en.wikipedia.org/wiki/Longest_common_substring_problem



            In particular, as Wikipedia explains, there is a linear-time algorithm, using suffix trees (or suffix arrays).



            Searching on "longest common substring" turns up that Wikipedia article as the first hit (for me). In the future, please research the problem before asking here. (See, e.g., https://meta.stackoverflow.com/q/261592/781723.)






            share|cite|improve this answer









            $endgroup$












              Your Answer





              StackExchange.ifUsing("editor", function ()
              return StackExchange.using("mathjaxEditing", function ()
              StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
              StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
              );
              );
              , "mathjax-editing");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "419"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105969%2flongest-common-substring-in-linear-time%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              2












              $begingroup$

              Yes, the longest common substring of two strings can be found in $O(m+n)$ time, where $m$ and $n$ are the lengths of the two strings, assuming the size of the alphabet is constant.



              Here is an excerpt from https://en.wikipedia.org/wiki/Longest_common_substring_problem.




              The longest common substrings of a set of strings can be found by building a generalized suffix tree for the strings, and then finding the deepest internal nodes which have leaf nodes from all the strings in the subtree below it.




              Building a generalized suffix tree for two given strings takes $Theta(m+n)$ time using the famous ingenious Ukkonen's algorithm. Finding the deepest internal nodes that come from both strings takes $Theta(m+n)$ time. Hence we can find the longest common substring in $Theta(m+n)$ time.






              share|cite|improve this answer









              $endgroup$

















                2












                $begingroup$

                Yes, the longest common substring of two strings can be found in $O(m+n)$ time, where $m$ and $n$ are the lengths of the two strings, assuming the size of the alphabet is constant.



                Here is an excerpt from https://en.wikipedia.org/wiki/Longest_common_substring_problem.




                The longest common substrings of a set of strings can be found by building a generalized suffix tree for the strings, and then finding the deepest internal nodes which have leaf nodes from all the strings in the subtree below it.




                Building a generalized suffix tree for two given strings takes $Theta(m+n)$ time using the famous ingenious Ukkonen's algorithm. Finding the deepest internal nodes that come from both strings takes $Theta(m+n)$ time. Hence we can find the longest common substring in $Theta(m+n)$ time.






                share|cite|improve this answer









                $endgroup$















                  2












                  2








                  2





                  $begingroup$

                  Yes, the longest common substring of two strings can be found in $O(m+n)$ time, where $m$ and $n$ are the lengths of the two strings, assuming the size of the alphabet is constant.



                  Here is an excerpt from https://en.wikipedia.org/wiki/Longest_common_substring_problem.




                  The longest common substrings of a set of strings can be found by building a generalized suffix tree for the strings, and then finding the deepest internal nodes which have leaf nodes from all the strings in the subtree below it.




                  Building a generalized suffix tree for two given strings takes $Theta(m+n)$ time using the famous ingenious Ukkonen's algorithm. Finding the deepest internal nodes that come from both strings takes $Theta(m+n)$ time. Hence we can find the longest common substring in $Theta(m+n)$ time.






                  share|cite|improve this answer









                  $endgroup$



                  Yes, the longest common substring of two strings can be found in $O(m+n)$ time, where $m$ and $n$ are the lengths of the two strings, assuming the size of the alphabet is constant.



                  Here is an excerpt from https://en.wikipedia.org/wiki/Longest_common_substring_problem.




                  The longest common substrings of a set of strings can be found by building a generalized suffix tree for the strings, and then finding the deepest internal nodes which have leaf nodes from all the strings in the subtree below it.




                  Building a generalized suffix tree for two given strings takes $Theta(m+n)$ time using the famous ingenious Ukkonen's algorithm. Finding the deepest internal nodes that come from both strings takes $Theta(m+n)$ time. Hence we can find the longest common substring in $Theta(m+n)$ time.







                  share|cite|improve this answer












                  share|cite|improve this answer



                  share|cite|improve this answer










                  answered 1 hour ago









                  Apass.JackApass.Jack

                  13.3k1939




                  13.3k1939





















                      1












                      $begingroup$

                      It is unlikely that that a better algorithm than quadratic exists, let alone linear. For the related problem of finding subsequences, this is a known result: In the paper "Tight hardness results for LCS and other sequence similarity measures." by Abboud et al. , they show that the existence of an algorithm with a running time of $O(n^2-varepsilon)$, for some $varepsilon>0$ refutes the Strong Exponential Time Hypothesis (SETH).



                      SETH is considered to be very likely true (although not universally accepted), so it is unlikely any $O(n^2-varepsilon)$ time algorithm exists.




                      While finding a substring is a slightly different problem, it seems likely to be equally hard.






                      share|cite|improve this answer











                      $endgroup$












                      • $begingroup$
                        are you talking about subsequence? I am talking about substring.
                        $endgroup$
                        – Manoharsinh Rana
                        2 hours ago











                      • $begingroup$
                        @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                        $endgroup$
                        – Discrete lizard
                        2 hours ago










                      • $begingroup$
                        Longest common substring is much easier than longest common subsequence. See my answer.
                        $endgroup$
                        – D.W.
                        1 hour ago















                      1












                      $begingroup$

                      It is unlikely that that a better algorithm than quadratic exists, let alone linear. For the related problem of finding subsequences, this is a known result: In the paper "Tight hardness results for LCS and other sequence similarity measures." by Abboud et al. , they show that the existence of an algorithm with a running time of $O(n^2-varepsilon)$, for some $varepsilon>0$ refutes the Strong Exponential Time Hypothesis (SETH).



                      SETH is considered to be very likely true (although not universally accepted), so it is unlikely any $O(n^2-varepsilon)$ time algorithm exists.




                      While finding a substring is a slightly different problem, it seems likely to be equally hard.






                      share|cite|improve this answer











                      $endgroup$












                      • $begingroup$
                        are you talking about subsequence? I am talking about substring.
                        $endgroup$
                        – Manoharsinh Rana
                        2 hours ago











                      • $begingroup$
                        @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                        $endgroup$
                        – Discrete lizard
                        2 hours ago










                      • $begingroup$
                        Longest common substring is much easier than longest common subsequence. See my answer.
                        $endgroup$
                        – D.W.
                        1 hour ago













                      1












                      1








                      1





                      $begingroup$

                      It is unlikely that that a better algorithm than quadratic exists, let alone linear. For the related problem of finding subsequences, this is a known result: In the paper "Tight hardness results for LCS and other sequence similarity measures." by Abboud et al. , they show that the existence of an algorithm with a running time of $O(n^2-varepsilon)$, for some $varepsilon>0$ refutes the Strong Exponential Time Hypothesis (SETH).



                      SETH is considered to be very likely true (although not universally accepted), so it is unlikely any $O(n^2-varepsilon)$ time algorithm exists.




                      While finding a substring is a slightly different problem, it seems likely to be equally hard.






                      share|cite|improve this answer











                      $endgroup$



                      It is unlikely that that a better algorithm than quadratic exists, let alone linear. For the related problem of finding subsequences, this is a known result: In the paper "Tight hardness results for LCS and other sequence similarity measures." by Abboud et al. , they show that the existence of an algorithm with a running time of $O(n^2-varepsilon)$, for some $varepsilon>0$ refutes the Strong Exponential Time Hypothesis (SETH).



                      SETH is considered to be very likely true (although not universally accepted), so it is unlikely any $O(n^2-varepsilon)$ time algorithm exists.




                      While finding a substring is a slightly different problem, it seems likely to be equally hard.







                      share|cite|improve this answer














                      share|cite|improve this answer



                      share|cite|improve this answer








                      edited 2 hours ago

























                      answered 3 hours ago









                      Discrete lizardDiscrete lizard

                      4,44011537




                      4,44011537











                      • $begingroup$
                        are you talking about subsequence? I am talking about substring.
                        $endgroup$
                        – Manoharsinh Rana
                        2 hours ago











                      • $begingroup$
                        @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                        $endgroup$
                        – Discrete lizard
                        2 hours ago










                      • $begingroup$
                        Longest common substring is much easier than longest common subsequence. See my answer.
                        $endgroup$
                        – D.W.
                        1 hour ago
















                      • $begingroup$
                        are you talking about subsequence? I am talking about substring.
                        $endgroup$
                        – Manoharsinh Rana
                        2 hours ago











                      • $begingroup$
                        @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                        $endgroup$
                        – Discrete lizard
                        2 hours ago










                      • $begingroup$
                        Longest common substring is much easier than longest common subsequence. See my answer.
                        $endgroup$
                        – D.W.
                        1 hour ago















                      $begingroup$
                      are you talking about subsequence? I am talking about substring.
                      $endgroup$
                      – Manoharsinh Rana
                      2 hours ago





                      $begingroup$
                      are you talking about subsequence? I am talking about substring.
                      $endgroup$
                      – Manoharsinh Rana
                      2 hours ago













                      $begingroup$
                      @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                      $endgroup$
                      – Discrete lizard
                      2 hours ago




                      $begingroup$
                      @ManoharsinhRana Ah, I see. The problems are similar, and it is hard to find results for the string variant. I think there are similar results for the substring problem, but they are not easy to find. You could try looking at papers that cite "Quadratic conditional lower bounds for string problems and dynamic time warping" by Bringmann and Künnemann, as their program lead to a lot of results related to this problem.
                      $endgroup$
                      – Discrete lizard
                      2 hours ago












                      $begingroup$
                      Longest common substring is much easier than longest common subsequence. See my answer.
                      $endgroup$
                      – D.W.
                      1 hour ago




                      $begingroup$
                      Longest common substring is much easier than longest common subsequence. See my answer.
                      $endgroup$
                      – D.W.
                      1 hour ago











                      1












                      $begingroup$

                      Yes. There's even a Wikipedia article about it! https://en.wikipedia.org/wiki/Longest_common_substring_problem



                      In particular, as Wikipedia explains, there is a linear-time algorithm, using suffix trees (or suffix arrays).



                      Searching on "longest common substring" turns up that Wikipedia article as the first hit (for me). In the future, please research the problem before asking here. (See, e.g., https://meta.stackoverflow.com/q/261592/781723.)






                      share|cite|improve this answer









                      $endgroup$

















                        1












                        $begingroup$

                        Yes. There's even a Wikipedia article about it! https://en.wikipedia.org/wiki/Longest_common_substring_problem



                        In particular, as Wikipedia explains, there is a linear-time algorithm, using suffix trees (or suffix arrays).



                        Searching on "longest common substring" turns up that Wikipedia article as the first hit (for me). In the future, please research the problem before asking here. (See, e.g., https://meta.stackoverflow.com/q/261592/781723.)






                        share|cite|improve this answer









                        $endgroup$















                          1












                          1








                          1





                          $begingroup$

                          Yes. There's even a Wikipedia article about it! https://en.wikipedia.org/wiki/Longest_common_substring_problem



                          In particular, as Wikipedia explains, there is a linear-time algorithm, using suffix trees (or suffix arrays).



                          Searching on "longest common substring" turns up that Wikipedia article as the first hit (for me). In the future, please research the problem before asking here. (See, e.g., https://meta.stackoverflow.com/q/261592/781723.)






                          share|cite|improve this answer









                          $endgroup$



                          Yes. There's even a Wikipedia article about it! https://en.wikipedia.org/wiki/Longest_common_substring_problem



                          In particular, as Wikipedia explains, there is a linear-time algorithm, using suffix trees (or suffix arrays).



                          Searching on "longest common substring" turns up that Wikipedia article as the first hit (for me). In the future, please research the problem before asking here. (See, e.g., https://meta.stackoverflow.com/q/261592/781723.)







                          share|cite|improve this answer












                          share|cite|improve this answer



                          share|cite|improve this answer










                          answered 1 hour ago









                          D.W.D.W.

                          102k12127291




                          102k12127291



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Computer Science Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              Use MathJax to format equations. MathJax reference.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f105969%2flongest-common-substring-in-linear-time%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              How should I use the fbox command correctly to avoid producing a Bad Box message?How to put a long piece of text in a box?How to specify height and width of fboxIs there an arrayrulecolor-like command to change the rule color of fbox?What is the command to highlight bad boxes in pdf?Why does fbox sometimes place the box *over* the graphic image?how to put the text in the boxHow to create command for a box where text inside the box can automatically adjust?how can I make an fbox like command with certain color, shape and width of border?how to use fbox in align modeFbox increase the spacing between the box and it content (inner margin)how to change the box height of an equationWhat is the use of the hbox in a newcommand command?

                              Doxepinum Nexus interni Notae | Tabula navigationis3158DB01142WHOa682390"Structural Analysis of the Histamine H1 Receptor""Transdermal and Topical Drug Administration in the Treatment of Pain""Antidepressants as antipruritic agents: A review"

                              inputenc: Unicode character … not set up for use with LaTeX The Next CEO of Stack OverflowEntering Unicode characters in LaTeXHow to solve the `Package inputenc Error: Unicode char not set up for use with LaTeX` problem?solve “Unicode char is not set up for use with LaTeX” without special handling of every new interesting UTF-8 characterPackage inputenc Error: Unicode character ² (U+B2)(inputenc) not set up for use with LaTeX. acroI2C[I²C]package inputenc error unicode char (u + 190) not set up for use with latexPackage inputenc Error: Unicode char u8:′ not set up for use with LaTeX. 3′inputenc Error: Unicode char u8: not set up for use with LaTeX with G-BriefPackage Inputenc Error: Unicode char u8: not set up for use with LaTeXPackage inputenc Error: Unicode char ́ (U+301)(inputenc) not set up for use with LaTeX. includePackage inputenc Error: Unicode char ̂ (U+302)(inputenc) not set up for use with LaTeX. … $widehatleft (OA,AA' right )$Package inputenc Error: Unicode char â„¡ (U+2121)(inputenc) not set up for use with LaTeX. printbibliography[heading=bibintoc]Package inputenc Error: Unicode char − (U+2212)(inputenc) not set up for use with LaTeXPackage inputenc Error: Unicode character α (U+3B1) not set up for use with LaTeXPackage inputenc Error: Unicode characterError: ! Package inputenc Error: Unicode char ⊘ (U+2298)(inputenc) not set up for use with LaTeX