2017-03-21 1 views
0

removeDuplicate(string)이라는 함수를 매개 변수로 사용하여 작성해야합니다. 인접한 모든 중복을 제거해야합니다. 또한 재귀 적이어야합니다. 이것은 내가 지금까지 가지고있는 것입니다 :문자열에서 인접한 중복을 반복적으로 제거하는 함수

def stringClean(string): 
    if len(string) == 0: 
     return "" 
    elif len(string) == 1: 
     return string[0] + string[1:] 
    else: 
     if string[0] == string[1]: 
      return string[0] + stringClean(string[2:]) 
     else: 
      return string[0] + stringClean(string[1:]) 


print stringClean('Hello') #returns Helo 

내 문제는 단지 두 개의 인접한 중복이있는 경우에만 작동한다는 것입니다. 'hello'를 올바르게 입력하면 'helo'가 반환되지만 'helllo'또는 'hellllo'를 입력하면 'helo'대신 'hello'가 반환됩니다. 이 작업 할 것

답변

4

: 코드에 대해서는

def stringClean(string): 
    if not string: 
     return "" 
    if len(string) == 1: 
     return string 
    if string[0] == string[1]: 
     return stringClean(string[1:]) 
    return string[0] + stringClean(string[1:]) 


print stringClean('HHHelllo') #returns Helo 

, 당신 그래서 그냥 반환 문자열이 있기 때문에 그것은 단지 하나 개의 문자로 구성이 경우에 길이가 1 인 경우 string[0] + string[1:]을 반환 할 필요가 없습니다 char. 이제 string[0] == string[1] 인 경우 첫 번째 char을 무시하고 나머지는이 함수에 적용합니다.

관련 문제