用遞歸方法判斷字符串是否是回文(Recursion Palindrome Python)


所謂回文字符串,就是一個字符串從左到右讀和從右到左讀是完全一樣的。比如:"level" 、“aaabbaaa”、 "madam"、"radar"。

 

如何判斷字符串是否是回文呢?解決思路如下:

1. 采取窮舉法(Brute Force algorithm),枚舉並檢查(enumerate & check)字串符的第一項和最后一項是否等同

2. 把檢查范圍逐步縮小,如果字串符的第一項和最后一項等同,那么去除字串符的第一項和最后一項,檢查新的字符串,以此類推

 

代碼如下:

def isPalindrome(s):
    if len(s) < 2: #如果字符串只有0個或1個字符,那么該字符串符合回文的定義
        return True
    if s[0]!=s[-1]: #如果字符串不止一個字符,那么檢查字串符的第一項和最后一項是否等同
        return False
    return isPalindrome(s[1:-1]) #字串符的第一項和最后一項等同,所以去除字符串的第一項和最后一項,繼續進行檢查

str=input("請輸入一個字符串: ")
if isPalindrome(str):
    print(str+"是一個回文字符串")
else:
    print(str+"不是一個回文字符串")

 

運行結果如下:

請輸入一個字符串: madam
madam是一個回文字符串

 

如果用迭代(Iteration)方法,也可以解出此題,但是要復雜很多。所以,到底是用遞歸法還是迭代法需要仔細斟酌。

 

參考:麻省理工學院公開課:計算機科學及編程導論 (第4課)

 

附:最簡單的解法

def isPalindrome(s):
return s == s[::-1]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM