所謂回文字符串,就是一個字符串從左到右讀和從右到左讀是完全一樣的。比如:"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]
