【问题标题】:Finding all words in a paragraph whose first three letters are the same?查找段落中前三个字母相同的所有单词?
【发布时间】:2015-10-18 18:18:22
【问题描述】:
我们怎样才能以最好的方式解决这个问题?有没有解决这个问题的算法?
“在一个段落中,我们必须找到并打印所有开头 3 个字母相同的单词。例如:我们输入一些段落,作为输出,我们会得到类似的字母-
a) 1. 你 2. 你的 3. 你的 4. 你自己
b) 1. 早 2. 早 3. 最早
这样我们得到段落中所有开头 3 个字母共同的单词"
【问题讨论】:
标签:
string
algorithm
data-structures
pattern-matching
stemming
【解决方案1】:
一个不太难编码的合理解决方案是维护某种映射,其中键是每个单词的前三个字母,值是以这三个字母开头的单词集。您可以浏览段落中的单词,对于遇到的每个单词,剪掉前三个单词,查找与这些字母对应的映射条目,然后将该单词添加到列表中。然后,您可以在最后遍历地图,找到包含至少两个单词的所有集合,然后打印出您找到的每个集群。
总的来说,这种方法的运行时间是 O(L),其中 L 是段落中所有单词的总长度。要看到这一点,请注意,对于每个单词,我们对该单词的固定大小前缀进行映射查找,然后将单词的所有字符复制到映射中。总的来说,这最多访问每个角色的次数是固定的。
【解决方案2】:
尝试使用前三个字符,然后将单词索引作为叶子应该可以解决问题。