任务是:找到两行中找到的最长子串。问题的特点是这些行很长(文件的内容,即每个400,000个字符),以及由短4个字符组成的字母。
字符串可以有不同的长度。
我发明并实现了以下算法:
要获取第一个文件的内容并写入字符串str1,删除换行符
要获取第二个文件的内容并写入字符串str2,删除换行符
我们将所有子串都视为字符串str1,从最长到最短。为此,在每次迭代时定义循环,同时(i> 0),在主内容减少字符串的长度一之后。所以长度为1的字符串。
在while循环中:长度为N的所有子字符串仅在起始位置不同。
设一个长度为N的字符串:
它是一个长度为N的子字符串,包含从0开始。
有两个长度为N-1的子字符串,从0和1位置开始
用于三个长度为N-2的子串,从0,1和2位开始
...
for循环中计数的起始位置(z = 0; z< = g-i; z ++),其中函数被称为getSubstring接收子字符串。然后使用字符串str2
的子字符串运行标准函数strstr但是这个算法足够长。有没有办法让它更快?
P.S。用C语言写
答案 0 :(得分:2)
至少有两个经典选项可以有效地解决最长公共子串