如何反转字符串python中的两个字符

时间:2012-03-18 00:28:44

标签: python string loops

我想知道如何反转字符串中的两个字符。 以下是一些例子:

'wing'=> 'iwng','inwg','ingw'

'west'=> 'ewst','eswt','estw'

我打算使用给出的任何答案并将其放入while循环中,这样我就可以在一次交换两个字符的同时获得字符串的所有可能组合。 离。

counter = 0

while (counter <= len(str1)):
    if str1 == reverse(str2):
      return str2
    elif str1 == str2
       return str2
    else:
      str1 = *some code that would swap the the characters m and n*
      str1 =  
      n += 1
      m += 1
return False

此代码比较两个字符串str1到str2,并通过交换字符来检查它们是否相同。

另外,有没有办法可以让它生成一个结果列表而不是打印它们?

谢谢!

3 个答案:

答案 0 :(得分:2)

试试这个:

s = 'wing'
s = 'west'
l = [x for x in s]
for i in xrange(len(s)-1):
    l[i], l[i+1] = l[i+1], l[i]
    print "".join(l)

答案 1 :(得分:1)

为了产生所有可能性,我们可以使用:

s = "yourstring"
for i in range(0,len(s)-2):
    if i>0: print s[:i]+s[i+1:i-1:-1]+s[i+2:]
    else: print s[1]+s[0]+s[2:]

答案 2 :(得分:1)

由于您希望实际比较两个字符串以查看它们是否“通过交换两个字符相同”,您实际上不需要生成所有可能的组合,而是可以遍历每个字符串中的每个字符。字符串,并确保不超过两个不相等。

这可以按如下方式完成:

def twoCharactersDifferent(str1,str2):
    if sorted(str1) != sorted(str2): #they must contain the same letters, exactly!
        return False    
    numDifferent = 0    
    for i in range(len(str1)):

        numDifferent += (str1[i] != str2[i])
        if numDifferent >2:
            return False
    return True

print twoCharactersDifferent('wings','winxg')