2017-03-21 5 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 

私の問題は、隣接する複製が2つしかない場合にのみ機能することです。 'hello'を正しく入力すると 'helo'が返されますが、 'helllo'や 'hellolo'を入力すると '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文字で構成され、このような場合には長さが1である場合にstring[0] + string[1:]を返す必要がないので、あなただけのリターンchar。今、string[0] == string[1]の場合は、最初のcharを無視して残りの関数を適用します。

関連する問題