【问题标题】: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 个字母共同的单词"

【问题讨论】:

  • 这个问题叫做词干
  • 尝试使用Trie

标签: string algorithm data-structures pattern-matching stemming


【解决方案1】:

一个不太难编码的合理解决方案是维护某种映射,其中键是每个单词的前三个字母,值是以这三个字母开头的单词集。您可以浏览段落中的单词,对于遇到的每个单词,剪掉前三个单词,查找与这些字母对应的映射条目,然后将该单词添加到列表中。然后,您可以在最后遍历地图,找到包含至少两个单词的所有集合,然后打印出您找到的每个集群。

总的来说,这种方法的运行时间是 O(L),其中 L 是段落中所有单词的总长度。要看到这一点,请注意,对于每个单词,我们对该单词的固定大小前缀进行映射查找,然后将单词的所有字符复制到映射中。总的来说,这最多访问每个角色的次数是固定的。

【讨论】:

    【解决方案2】:

    尝试使用前三个字符,然后将单词索引作为叶子应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多