1. 程式人生 > >用遞歸方法判斷字符串是否是回文(Recursion Palindrome Python)

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

回文字符 如何 .html ont for level course put 如果

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

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