我如何与一个字符串中的直接邻居交换一个字母?

问题描述 投票:0回答:3

我正在尝试创建一个函数,该函数将字符串作为参数,并通过与相邻字母交换字母来返回所有生成的单词的列表。

我首先获取每个字母并创建一个字符串列表,每个字符串包含一个字母。

然后我遍历新的字母列表并尝试交换它们。

然后我将字母连在一起形成一个字符串。

然后将新字符串附加到返回的列表中。

这是我的代码。请告诉我如何解决。我不希望它在列表中显示通过的单词。谢谢。

def mixedString(word):

    word = word.lower()
    letters = []
    newArray = []

    for n in word:
        letter = f"{n}"
        letters.append(letter)

    newList = []

    for i in range(len(letters)):
        newWord = ""
        newArray = letters[i:] + letters[:i]
        newWord = "".join(newArray)
        newList.append(newWord)

    return newList

myWord = "Dog"

print(mixedString(myWord))
python string list for-loop swap
3个回答
1
投票

提示:只有n-1个不同的单词,其中原始单词的一个字母已被交换。要了解原因,请注意ab仅以ba作为结果。

如果单词的字母位于位置[[i和i + 1”,则替换[[i之前的字母不变,并且i + 1之后的字母也不变。

def swap(s, i): return s[:i] + s[i+1] + s[i] + s[i+2:] def neighbors(s): return [swap(s, i) for i in range(len(s)-1)]

0
投票
def swap(string, place_1, place_2): string = list(string) string[place_1], string[place_2] = string[place_2], string[place_1] return ''.join(string) a = '1234' print(swap(a, 1, 2)) >>> 1324

0
投票

我不希望它在列表中显示通过的单词。

只需跳过相关循环中的第一次迭代,例如通过替换为:

for i in range(len(letters)):

带有此:

for i in range(1, len(letters)):
© www.soinside.com 2019 - 2024. All rights reserved.