【发布时间】:2012-06-19 11:11:50
【问题描述】:
我正在寻找一种方法来查找输入文件中包含至少 3 个字符的所有重复序列,然后打印出最常见的序列!它似乎需要大量的字符串处理和对输入文件的密集搜索,特别是因为要查找的模式的最大大小没有上限!
是否有任何有效的算法可以以尽可能少的处理和混乱来做到这一点? 我应该使用 string.h 还是使用 char 数组会更好? 关于如何开始的任何提示/有用的 sn-ps 等?
tnx
【问题讨论】:
-
你需要找到所有的还是最频繁的?
-
你能给出预期的文件和输出吗
-
如果文件很小,你可以将它全部加载到内存中,这样你就不用多次读取它了。你也可以研究suffix trees?
-
这确实可以方便地在代码库中发现违反 DRY 原则的行为:]
-
你喜欢更长的序列吗?因为任何常见的 5 个字符序列 (abcde) 总是至少需要 4 个字符序列 (abcd, bcde) 和 3 个字符序列 (abc, bcd, cde),所以较长的序列总是比较长的序列具有较低的频率序列。
标签: c++ string algorithm search