私は現在 edx でプログラミング コースを行っています。私の指示は次のとおりです。二分探索のアイデアを使用して、文字列がアルファベット順である限り、文字列内に文字が含まれているかどうかをチェックする再帰アルゴリズムを記述します。私のコード(python 2.7)はここにあります:
def isitIn(char, aStr):
m = aStr[len(aStr) // 2]
if aStr == '' or len(aStr) == 1 or char == m:
return False
else:
if char < m:
return isitIn(char, aStr[:-1])
elif char > m:
return isitIn(char, aStr[1:])
return isitIn(char, aStr)
私の説明: まず、文字列の真ん中の文字を見つけることから始めます。文字と等しい場合は False を返します。文字と等しくない場合は、文字が中央の文字よりも低いかどうかを確認し、再帰関数を使用してスタックを作成し、最終的に真のブール値を返します。中間の文字を含めたくないので、-1 と 1 のインデックスを使用しました。
解決策の代わりに、私はまだそれを理解しようとしているので、ヒントを得たいと思っていますが、別の視点が害になることはありません. ありがとう!
Error message:
Test: isIn('a', '')
Your output:
Traceback (most recent call last):
File "submission.py", line 10, in isIn
m = aStr[len(aStr) // 2]
IndexError: string index out of range
Correct output:
False