我有一个很大的清单,大概有10万行这样的文字:
想要找到流行的子串,在这种情况下,"ipad“将是最受欢迎的,而"world”将位居第二。最小长度应该是三到四个字符。
我无法预测子字串,所以使用字典是否定的。
发布于 2010-11-12 20:04:50
这是一个相对复杂的问题..。但使用前缀/后缀树是可处理的。它本质上是最长公共子序列和最长公共子串问题的变体。-这就是我要开始的地方.
实际上,关于这个表单上的问题,有相当多的一点研究 --您应该能够使用上面的术语来缩小搜索范围。
发布于 2010-11-12 20:07:24
您可以使用可以在广义后缀树时间内构建的O(n)来解决这个问题。这实际上是LCS问题上的一出戏。
发布于 2010-11-12 20:22:53
我将使用以下逻辑流来解决这个问题:
最后,我们将有一个长的哈希表与频率的词作为值。假设您只需要10个最受欢迎的单词,而不是昂贵的排序。从一开始就设置一个集合,其标准是它中的任何单词都必须有比当前的最小分数更高的分数。你可以用最小分数来记录单词,当你在第11项加分超过最小分数时,用最小分数加出这个单词,并更新最小分数指针。
哈希表中的最大键数为2*k*n,其中k是单词的平均长度,n是单词总数。
https://stackoverflow.com/questions/4168574
复制相似问题