Python 使用递归对分搜索检查字符是否在字符串中
我的代码在这里:Python 使用递归对分搜索检查字符是否在字符串中,python,search,bisection,edx,Python,Search,Bisection,Edx,我的代码在这里: def isIn(char, aStr): mid = len(aStr)//2 if len(aStr)==0: return False elif len(aStr)==1: if char == aStr: return True elif aStr[mid] == char: return True if mid == 0 and len(aStr) != 1: return False else: if char
def isIn(char, aStr):
mid = len(aStr)//2
if len(aStr)==0:
return False
elif len(aStr)==1:
if char == aStr:
return True
elif aStr[mid] == char:
return True
if mid == 0 and len(aStr) != 1:
return False
else:
if char > aStr[mid]:
return isIn(char,aStr[mid:] )
else:
return isIn(char,aStr[0:mid])
我的代码适用于字符串中存在字符的情况,如果测试用例是这样的,即如果我要在字符串中搜索的字符实际上不存在于字符串中,那么代码将进入无限循环。
例如,在测试用例isIn('m','iloruyz')中,代码进入一个无限循环。在中,如果len(asr)==1:
条件满足,则仅当条件满足时返回True;如果条件不满足,则不返回False,这就是无限循环发生的地方:)
def isIn(char, aStr):
mid = len(aStr)//2
if len(aStr)==0:
return False
elif len(aStr)==1:
if char == aStr:
return True
else: # Else return false to stop the infinite loop
return False
elif aStr[mid] == char:
return True
if mid == 0 and len(aStr) != 1:
return False
else:
if char > aStr[mid]:
return isIn(char,aStr[mid:] )
else:
return isIn(char,aStr[0:mid])