Python中的单词阶梯
我正在尝试用Python创建一个单词阶梯程序。我想生成与给定单词相似的单词。在C++或Java中,我会遍历原始字符串中的每个有效位置,然后用英文字母中的每一个字母替换它,看看结果是否是一个有效的单词。例如(伪代码)
for (int i = 0; i < word.length(); i++) {
for (every character c in the alphabet) {
change the letter of word at index i to be c.
if the result is a valid word, store it in a list of similar words
}
}
.
不过,这似乎不是很“Python”的做法。我该如何用Python来解决这个问题呢?
1 个回答
2
一个生成相似单词的工具(它需要一个条件函数,也就是一个可以返回真或假的函数,用来检查一个单词是否有效)看起来是个不错的起点:
import string
def allsimilar(word, valid):
wl = list(word)
for i, c in enumerate(wl):
for x in string.ascii_lowercase:
if x == c: continue
wl[i] = x
nw = ''.join(wl)
if valid(nw): yield nw
wl[i] = c
如果你想要这个列表,使用 list(allsimilar(word, valid))
当然可以帮你生成。
另外,你也可以不使用 wl
,直接生成新单词,像这样:
nw = word[:i] + x + word[i+1:]
不过,我没有仔细测过时间,我怀疑这样可能会慢一些。
一个小的优化建议是可以 import array
,然后用:
wl = array.array('c', word)
来替代 list(word)
。