Python找回文子串的方法
1、雙指標兩邊擴充套件
遍歷指標為i, j=i+1, i左移,j右移。判斷是否相等將長度,下標賦給臨時變數,最後切片返回。唯一的大坑。迴文字串長度可以是奇數也可以是偶數。奇數的時候,內層迴圈從i-1開始。邊界條件也需要處理好。
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ n = len(s) maxL, maxR, max = 0, 0, 0 for i in range(n): # 長度為偶數的迴文字串 start = i end = i + 1 while start >= 0 and end < n: if s[start] == s[end]: if end - start + 1 > max: max = end - start + 1 maxL = start maxR = end start -= 1 end += 1 else: break # 長度為奇數的迴文子串 start = i - 1 end = i + 1 while start >= 0 and end < n: if s[start] == s[end]: if end - start + 1 > max: max = end - start + 1 maxL = start maxR = end start -= 1 end += 1 else: break return s[maxL:maxR+1]
2、Manacher演算法
由於在輸入預處理的步驟中,將所有的迴文子字元已經轉為奇數長度。所以在下面的操作中,只需要將輸入的每一個字元,都當做一個迴文子字元的中心位即可。不需要考慮偶數長度的迴文子字元。
''' @author: Yizhou Zhao ''' # 設定 radius[i] = 1, 因為字元本身也是一個迴文數 radius[i] = 1 while(string[i-radius[i]] == string[i+radius[i]]): radius[i] += 1
以上就是Python找回文子串的方法,希望對大家有所幫助。更多Python學習指路:
本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2830129/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分割回文串
- 回溯演算法 LeetCode 131 分割回文子串演算法LeetCode
- leetcode------分割回文串LeetCode
- LeetCode-131-分割回文串LeetCode
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- 同構——用數論指紋尋找子串排列
- Amazon面試題:尋找最長迴文子串面試題
- Python小技巧 - 子串查詢Python
- leetcod 131.分割回文串(回溯、迴文字串)字串
- 30串聯所有單詞的子串
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- 子串位置
- Python中基於匹配項的子列表列表串聯Python
- 最長子串
- 子串查詢
- [leetcode 30 串聯所有單詞的子串 10ms]LeetCode
- 最長上升子串
- 子串匹配 BF法
- Python連線兩個字串並去除首尾重複子串Python字串
- Python 類變動的鉤子方法Python
- HDU 1671 字典樹(判斷是否有一個串是另一個串的子串)。
- LeetCode題解(1639):統計只差一個字元的子串數目(Python)LeetCode字元Python
- lCS(最長公共子串)
- 04.子串,啟動!
- 無重複字元的最長子串字元
- python ChainMap增加子上下文的方法PythonAI
- [NOIP2015 提高組] 子串
- 76. 最小覆蓋子串
- java 最長迴文子串Java
- Python unittest.TestLoader()類的幾種尋找testcase的方法的使用Python
- 3 無重複字元的最長子串字元
- LeetCode——無重複字元的最長子串LeetCode字元
- java無重複字元的最長子串Java字元
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- LeetCode 39. 組合總和 40.組合總和II 131.分割回文串LeetCode
- 線性dp:最長公共子串
- 雙子串最大異或 題解
- DreamJudge-1294-字尾子串排序排序