我正在处理传入的文本流。例如 美国、英国、中国、俄罗斯、美国、英国、中国、法国、德国。
我需要将它们分解为 3 个单词(或者可能是 n 个单词)的序列,并分析哪个序列的频率最高。在上述情况下,美国、英国、中国的序列出现了两次。所以它的频率最高。
此外,我需要索引所有序列的频率。我曾尝试使用 C++ stl map 来部分解决一些问题,但我认为该解决方案并不优雅。原因是唯一索引m个唯一词,在使用 stl map 的 3 个词序列中,数学如下,
ixmxm + jxm + k
i, j, k 是每个单词的整数映射。
上述解决方案的问题在于连续的文本流,我们不知道唯一词的总数或 m。任何人都可以提出更好的算法吗?