步进词是通过取一个给定的单词,加上一个字母,然后对结果进行重新编程而形成的。例如,从单词“APPLE”开始,您可以添加一个“A”和一个anagram来获得“APPEAL”。在
给定一个全局单词字典,创建一个函数step(word),该函数返回字典中出现的所有唯一、有效的step单词的列表。在
字典:https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt
我用以下链接制作了一本词典:
>>> words = open('words.txt', encoding='ascii').read().upper().split()
这个赋值应该在没有任何其他库函数调用的情况下完成。有几种解决方案,但有些比其他方案更好、更快。如何加快解决方案的速度?在
解决方案应该是这样的。在
^{pr2}$
因为字谜有相同的字母,如果你按字母顺序对一个单词中的字母进行排序,你将得到相同的字串,这些字串是彼此的字谜。 例如: 闰->;按字母顺序排序->;AEPL 浅色->;字母排序->;AEPL
1)您应该遍历字典中的所有单词,并创建按字母顺序排序的字符串键的查找,以查找具有相同键的单词列表。在
给出一个单词表
您将得到如下的anagram查找
^{pr2}$2)接下来,取输入的单词,尝试不同的字母组合来创建一个新的字符串。对这个字符串进行排序,然后对照anagram字典查找匹配项。将返回的列表连接到一个列表中并返回该列表。在
比如说,让我们生成单词组合
按字母顺序对每个候选单词进行排序
然后查找并连接返回的列表
如果您也需要python代码,请告诉我,但编写代码应该很容易。加速主要是由于对anagram查找字典进行预处理,最终查找在几乎恒定的时间内运行,但它使用了输入列表中单词顺序的额外空间。在
相关问题 更多 >
编程相关推荐