神奇的词根
问题:
字典为[“cat”,“bat”,“rat”],句子为"the cattle was ralled by the battery",经过替换,输出句子为"the cat was by the bat“。
解决:
首先建立两个字典,并做好初始化工作。在建立字典时我们使用collections.defaultdict()建立一个默认字典,它本身是一个字典,只不过python会自动为他的键赋一个初始值。
接下来,以每一个词根的首字母为键,把每一个词根放到键所对应的值中去,这里的值是一个集合(set),同时记录下该首字母所对应的词根的最大长度是多少,这样一来,之后对比单词的前缀时,只需要看这个最大长度即可。
字典建立好以后,首先把每个单词拿出来,查找以单词开头的词根是否能够和这个单词匹配,s字典 里记录了以某个字母开头的词根的最大长度,从第一位开始截取一直截取到最大长度,如果发现这个子字符串确实是一个词根的话,则修改单词,并结束该轮循环。为了方便记录下表和读取单词,使用enumerate()函数来遍历句子,它会把索引放到第一个变量,把元素放到第二个变量。
最后通过字符串的join方法连接各个单词即可。
源代码:
#神奇的词根
from collect