String 查找段落中前三个字母相同的所有单词?
我们怎样才能以最好的方式解决这个问题?有解决这个问题的算法吗? “在一个段落中,我们必须找到并打印所有以3个字母开头的单词。例如:我们输入一些段落,作为输出,我们得到如下字母- a) 1.你2.你的3.你的4.你自己 b) 1.早2.早3.早String 查找段落中前三个字母相同的所有单词?,string,algorithm,data-structures,pattern-matching,stemming,String,Algorithm,Data Structures,Pattern Matching,Stemming,我们怎样才能以最好的方式解决这个问题?有解决这个问题的算法吗? “在一个段落中,我们必须找到并打印所有以3个字母开头的单词。例如:我们输入一些段落,作为输出,我们得到如下字母- a) 1.你2.你的3.你的4.你自己 b) 1.早2.早3.早 这样,我们就得到了段落中所有以3个字母开头的单词,它们都是相同的“一个不太难编码的合理解决方案是维护一个某种映射,其中键是每个单词的前三个字母,值是以这三个字母开头的单词集。您可以扫描段落中的单词,对于遇到的每个单词,删掉前三个单词,查找与这些字母对应的地
这样,我们就得到了段落中所有以3个字母开头的单词,它们都是相同的“一个不太难编码的合理解决方案是维护一个某种映射,其中键是每个单词的前三个字母,值是以这三个字母开头的单词集。您可以扫描段落中的单词,对于遇到的每个单词,删掉前三个单词,查找与这些字母对应的地图条目,然后将该单词添加到列表中。然后,您可以在最后遍历映射,找到至少包含两个单词的所有集合,然后打印出找到的每个簇
总的来说,这种方法的运行时间是O(L),其中L是段落中所有单词的总长度。要看到这一点,请注意,对于每个单词,我们对该单词的固定大小前缀进行映射查找,然后将该单词的所有字符复制到映射中。总的来说,这最多访问每个字符的次数是固定的。使用前三个字符进行测试,然后使用单词索引作为叶子来完成操作。这个问题被称为使用词干分析。