2012-03-18 2 views
0

문자열에서 두 문자를 뒤집는 방법을 궁금합니다. 다음은 몇 가지 예입니다 :문자열 파이썬에서 두 문자를 뒤집는 방법

'날개'

'서쪽' 'estw'=> 'ewst', 'ESWT',

'ingw'=> 'iwng', 'inwg' 주어진 답을 사용하고 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 

이 코드는 분위기 문자를 교환함으로써 동일한 있는지 두 스트링 (STR2)을 STR1 및 검사를 비교한다.

또한이 방법을 사용하면 인쇄 대신 결과 목록을 생성 할 수 있습니까?

고맙습니다!

+0

방법은 두 문자를 교환하여 eswt''에 west''에서 얻었 는가? – Doboy

+0

"교환"을 정의하십시오. 이 숙제가 있니? –

+0

문자열을 통과하면서 두 문자를 나란히 바꿉니다. 그래서 [0]과 [1] 그리고 나서 [1] [2], [2] [3] 등등을 바꿔라. – Jerry

답변

1

이 시도 :

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) 
+0

굉장해! 저거 정말 예쁘다! 그것을 인쇄하는 대신, 나는 각 루프 반복의 결과를 원한다. 나는 단지 ''.join (l)을 로컬에 정의 된 변수에 추가한다. – Jerry

+0

나는 그것을 얻는다, nvm, pastebt 고맙다! – Jerry

+4

단지'l = list (s) '입니다. 목록 이해가 필요 없습니다. – agf

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:] 
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') 
관련 문제