最大长度为n的穷举字符替换

2024-09-29 19:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python相当在行,但是这个问题真的折磨着我,我需要帮助。你知道吗

鉴于以下情况:

alphabet_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letters = [x for x in alphabet_string]
max_replacements = 3

我想找到所有可能的替代品直到max_replacements。你知道吗

例如,第一次迭代会将其添加到列表中:

AACDEFGHIJKLMNOPQRSTUVWXYZ

其中BA替换,因为它是letters列表中的第一个元素。第二次迭代将执行以下操作:

ABADEFGHIJKLMNOPQRSTUVWXYZ

等等等等。通过alphabet_string完成对letters的一次完整迭代后,替换将开始,如下所示:

AAADEFGHIJKLMNOPQRSTUVWXYZ

然后:

ABAAEFGHIJKLMNOPQRSTUVWXYZ

等等。你知道吗

这可能太简单了,但我迷路了。任何帮助都太好了。你知道吗


Tags: in元素替代品列表forstring情况max
1条回答
网友
1楼 · 发布于 2024-09-29 19:26:37

我递归地做。我在输出中获得了正确的项数,并手动检查了它是否存在更简单的问题。谢谢你问这个问题,真的很有趣!你知道吗

alphabet_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
max_replacements = 3

def find_neighbours(word, alphabet, n):
    if n < 0:
        raise ValueError("negative n!")
    if n == 0:
        return [word]
    out = []
    for l in alphabet:
        k = n if l == word[0] else n-1
        res = find_neighbours(word[1:], alphabet, k)
        out += [l + r for r in res]
    return out    

out = find_neighbours(alphabet_string, alphabet_string, max_replacements)

相关问题 更多 >

    热门问题