您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何用python尋找一個字符串里的最大回文”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何用python尋找一個字符串里的最大回文”吧!
題目要求如下:
尋找一個字符串里的最大回文,例如字符串"sddcbabcdtre",這里面的最大回文是"dcbabcd"
所謂回文,是指一段字符串從左向右和從右向左看是一樣的
題目講明,是字符串里包含了一段回文,而不是整段字符串是一段回文
回文的長度可以是偶數,也可以是奇數
長度為1的字符串不算回文
對字符串進行遍歷
每遍歷到一個字符時,以其為中心向左右兩側驗證是否構成回文
需要變量記錄回文的起始位置和長度
#coding=utf-8
str_value = "sddcbabcdtre"
#str_value = "aaa"
i = 0
start_index = 0 #記錄回文的起始位置
plalindrome_len = 0
while i < len(str_value)-1:
tmp_len = 0
left,right = 0,0
#假設回文長度是偶數
if str_value[i] == str_value[i+1]:
# 找到下一個要比較的位置
left,right = i-1,i+2
tmp_len = 2
#注意循環的條件
while left >= 0 and right < len(str_value):
if str_value[left] == str_value[right]:
left -= 1 #向前
right += 1 #向后
tmp_len += 2 #長度要加2
else:
break
if tmp_len > plalindrome_len:
plalindrome_len = tmp_len
start_index = left + 1 #此處要加1
#假設回文長度是奇數
if i > 0 and str_value[i-1] == str_value[i+1]:
left,right = i-2,i+2
tmp_len = 3
while left >= 0 and right < len(str_value):
if str_value[left] == str_value[right]:
left -= 1
right += 1
tmp_len += 2
else:
break
if tmp_len > plalindrome_len:
plalindrome_len = tmp_len
start_index = left + 1
i += 1
if plalindrome_len == 0:
print 'no plalindrome'
else:
print str_value[start_index:
start_index+plalindrome_len]
程序的關鍵在于以某一個字符為中心,向左右兩側遍歷,以判斷是否構成回文,這很像將一張紙對折
對于while 循環,由于是在遍歷字符串,那么對于兩端的邊界就必須做越界的檢查,這是不可缺少的
程序里可能存在多個回文,因此想找出最大的,必須借助tmp_len來和已經找到的最大回文做比較
感謝各位的閱讀,以上就是“如何用python尋找一個字符串里的最大回文”的內容了,經過本文的學習后,相信大家對如何用python尋找一個字符串里的最大回文這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。