私はPython(またはプログラミング)には新しく、再帰を学習しようとしています。文章がPythonで回文であるかどうかを確認するより良いアプローチ
私は再帰的なpython関数を書いて、文章(単語ではない)が回文かどうかを調べました。
def checkPalindrome(sentence):
sentence = re.sub('[^\w]', '', sentence.lower())
if len(sentence) == 1:
return True
elif len(sentence) == 2:
return sentence[0] == sentence[1]
else:
return checkPalindrome(sentence[1:-1])
この関数は機能し、正しい結果を提供します。例:
checkPalindrome('Go hang a salami; I’m a lasagna hog')
True
しかし、私はスペース、句読点を削除し、関数の先頭に文の場合を変えるておりますので、このステップは、すべての再帰呼び出しで計算されます。
これを回避するには、関数を書き直す方法がありますか?
小文字の句読点のない文字列を単に "渡す"機能を定義することができます。あるいは単に 'sentence'を正しい値として開始してください。 –
'QQ'キャラクタがこのようにする最後の2つの文字の等価性をチェックしているので、関数' 'randomtextQQdsfdfdfs''を' 'True''を返すなど、関数は機能しません"palindrome" true – Pythonista
あなたのロジックはここで間違っていると思う...それは2つの中間の文字が同じである限り、それはpalindromだと思うだろう(途中で任意の文字で)... @Pythonistaはそれに私を打つ –