Python3回文相關演算法小結

2022-01-18 03:35:38 字數 1468 閱讀 6725

[本文出自天外歸雲的]

判斷字串本身是否是回文

返回字串中的所有子串

找到字串中包含的所有回文

判斷字串中是否包含回文

將字串變成乙個不包含回文的字串

**如下:

#

判斷字串本身是否是回文

def is_huiwen(str, i=0):

#回文至少長度為2

if len(str) == 1:

return

false

#撞針法判斷是否是回文字串

while

true:

if i >= len(str) -i:

return

true

if str[i] != str[len(str) - i - 1]:

return

false

i += 1

#返回字串中所有的子串

all_substr = lambda str: [str[i:i + x + 1] for x in range(len(str)) for i in range(len(str) -x)]

#找到字串中包含的所有回文

def find_all_huiwen(str, ret=):

substrs =all_substr(str)

#遍歷字串中的所有子串並找出所有回文子串

for i in

range(len(substrs)):

ifis_huiwen(substrs[i]):

#判斷字串中是否包含回文

defcontain_huiwen(str):

substrs =all_substr(str)

#遍歷字串中所有子串並判斷字串中是否包含回文子串

for i in

range(len(substrs)):

ifis_huiwen(substrs[i]):

return

true

return

false

#將字串變成乙個沒有回文的字串

def no_huiwen(str, ret="", i=0):

#從字串的索引第0位開始到字串索引末位結束

while i < len(str) - 1:

#確保新生成的字串不包含回文

ifnot contain_huiwen(ret +str[i]):

ret +=str[i]

#逐位判斷

i += 1

return

retif

__name__ == '

__main__':

str = "

abccbabc

"find_all_huiwen(str)

print

(contain_huiwen(str))

print(no_huiwen(str))

演算法題4 回文數(python3實現)

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 從右向左讀,為 01...

演算法入門 3 4回文

大致過程為 先預處理,將非字母字元去掉,並將所有大寫字母轉為小寫字母 然後從第二個字元開始作為中間元素查詢最長的回文,並記錄最長的長度和位置 難點是 輸出為原輸入字串的子串,這裡用的方法和作者的一樣,用陣列p記錄預處理後的每個字元在原字串的位置。如下 2014年6月24日23 16 08 inclu...

Python演算法高階 4 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false示例 2 輸入 1 2 2 1 輸出 true第一種演算法採用 def ispalindrome self,head listnode bool vals current node head while current node ...