我在采访中遇到了一个有趣的问题。但是我无法回答它,也没有在Google上找到它。
问题如下:
您将获得一个数据流。在变量声明的帮助下,如何找到数据中是否有重复或循环。
数据流的示例是:
100100100100
0001000100010001
100100010001
10...0010....010....01(where 0....0 is 0^10^10^10)
如何解决这个问题?是否存在针对此类问题的算法?
答案 0 :(得分:5)
我认为这个问题必须有两种方法
<强> 1。最长的重复子字符串问题
这是众所周知的在线性时间内有解的问题。你必须为你的字符串构造suffix tree
然后分析它。
有关详细信息,请check this article
<强> 2。重复的子串问题(任何)
您可以修改Longest repeated substring
以查找任何重复的子字符串。
答案 1 :(得分:3)
蛮力解决方案是使用地图或字典,即流100100100100
它将是:
dict["1"]++
dict["10"]++
dict["100"]++
dict["1001"]++
等直到重复的最大长度才能找到。然后我们删除第一个符号并重复,即删除1
并留下00100100100
进行分析:
dict["0"]++
dict["00"]++
dict["001"]++
dict["0010"]++
等
最后,我们遍历地图并打印具有多个值的所有键。
有更高效的算法,但这是我猜的最简单。