Python中的单词阶梯

1 投票
1 回答
6012 浏览
提问于 2025-04-15 23:54

我正在尝试用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)

撰写回答