【发布时间】:2018-01-06 22:20:10
【问题描述】:
在quiz 中,它告诉我编写一个代码,以确保一个字符是否在按字母顺序排序的字符串中,它告诉我二分搜索以确定一个字符是否在字符串中并告诉我编写递归代码,不要使用“in”(for i in ...)
我的代码是这样的:
def isIn(char, aStr):
'''
char: a single character
aStr: an alphabetized string
returns: True if char is in aStr; False otherwise
'''
var = 0
if char == '' and aStr == '':
return True
elif char == '' or aStr == '' :
return False
elif aStr[int((len(aStr))/2)] == char :
return True
elif aStr[int((len(aStr))/2)] < char :
var = int((len(aStr))/2)
return isIn(char , aStr[var:])
elif aStr[int((len(aStr))/2)] > char :
var = int((len(aStr))/2)
return isIn(char , aStr[0 : var])
但是当我传递像 (char = 'o' aStr = 'efggnqu', or char = 'y' aStr = 'orstv',or char = 'y' aStr = 'aamotv') 这样的值时,它给了我一个错误像这样:
Traceback (most recent call last):
File "submission.py", line 21, in isIn
return isIn(char , aStr[0 : var])
File "submission.py", line 18, in isIn
return isIn(char , aStr[var:])
File "submission.py"...OUTPUT TRUNCATED
解决办法是什么?
【问题讨论】:
-
你可以简单地检查
char in aStr它会返回True或False -
@Gahan 指示说不要。