I know it's not a duplicate, because Longest Common Subsequence produces different results. For example, the longest common subsequence between "thisisatest" and "testing123testing" is "tsitest". The longest common substring is just "test". I was going to use my code as an example of dynamic programming in Longest Common Subsequence until I noticed the difference in the algorithms. Longest Common Subsequence skips characters in the middle of a string, whereas Longest Common Substring only considers consecutive characters. For that matter, the two problems also have separate Wikipedia articles, for what it's worth.
It is indeed a problem in a Coursera bioinformatics course that is currently running and solutions are expected to use suffix trees. The strings for that exercise are like 30K in length. I tried the current C# algorithm (coded in Go though) on one of these data sets. It took 15 seconds or so but did produce an answer that passed the grader. —Sonia (talk) 21:05, 19 February 2015 (UTC)Reply[reply]
Yes, generalised suffix trees would certainly provide a more efficient algorithm for solving this problem. But from what I've seen, they also take longer to code than the time I happen to have available. Still, it'd be cool to see one implemented if anyone did have the time. --Geoffhacker (talk) 19:43, 24 February 2015 (UTC)Reply[reply]