2017-03-21 30 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'将返回'hello'而不是'helo'。

回答

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 

关于你的代码,就没有必要返回string[0] + string[1:]如果字符串因为它仅包含一个字符的这种情况是长度为1的,所以你只要回报字符。现在,如果string[0] == string[1],那么你想忽略第一个字符,并在其余的应用功能。