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

來源:互聯網
上載者:User

標籤:範圍   enum   pen   電腦科學   print   aabb   ati   .com   algo   

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.