【问题标题】:how to reverse two characters in a string python如何反转字符串中的两个字符python
【发布时间】:2012-04-03 01:02:03
【问题描述】:

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

'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,并通过交换字符来检查它们是否相同。

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

谢谢!

【问题讨论】:

  • 你是如何通过交换两个字符从westeswt 的?
  • 定义“交换”。这是作业吗?
  • 您在遍历字符串时并排交换两个字符。所以交换 [0] 和 [1],然后是 [1] [2],然后是 [2] [3],等等。

标签: python string loops


【解决方案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')

【讨论】:

    【解决方案2】:

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

    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:]
    

    【讨论】:

      【解决方案3】:

      试试这个:

      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)
      

      【讨论】:

      • 好的,太棒了!那个好漂亮!而不是打印它,我只想要每个循环迭代的结果,我只需将 ''.join(l) 附加到本地定义的变量?
      • 只是l = list(s),不需要列表理解。
      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 2019-05-02
      • 2012-01-11
      • 2020-09-04
      • 2022-09-30
      • 2010-10-30
      相关资源
      最近更新 更多