我是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
然而,因爲我去掉空格,標點和功能的改變開始的句子的情況下,這一步驟將在每次遞歸調用計算。
有沒有更好的方法來重寫函數以避免這種情況?
您可以定義一個單獨的函數,它只是「傳遞」小寫,無標點符號的字符串。或者,只需開始「句子」作爲正確的值。 –
你的函數不起作用,例如傳入字符串'「randomtextQQdsfdfdfs」'它會返回'True',因爲你正在檢查'QQ'字符所在的最後兩個字符是否相等「palindrome」true – Pythonista
我認爲你的邏輯在這裏是錯誤的......只要兩個中間字母相同(中間有一個可選的字母),它會認爲它是一個迴文... @Pythonista擊敗了我 –