leetcode題集 最長回文子串(待整理)

2021-07-15 10:34:35 字數 827 閱讀 9507

given a string 

s, find the longest palindromic substring in s. 

you may assume that the maximum length of 

sis 1000, and there exists one unique longest palindromic substring.

回文串就是乙個正讀和反讀都一樣的字串,比如「level」或者「noon」等等就是回文串。

回文子串,顧名思義,即字串中滿足回文性質的子串。比如輸入字串 "google",由於該字串裡最長的對稱子字串是 "goog",因此輸出4。

方法一:中心擴充套件法

這個演算法思想其實很簡單啊,時間複雜度為o(n^2),空間複雜度僅為o(1)。就是對給定的字串s,分別以該字串s中的每乙個字元c為中心,採用雙指標法left和right,向兩邊擴充套件記錄下以字元c為中心的回文子串的長度。但是有一點需要注意的是,回文的情況可能是奇數個字元,如 a b a,也可能是偶數個字元,如 a b b a。此時,首先找出兩個相鄰元素相等的值,再向兩邊擴充套件。

string longestpalindrome(string s)

{int len=s.size();

if(len==0) return s;

string sub="";

//當對稱字元為奇數個時

for(int i=0;i0&&right0&&right方法二:manacher演算法

時間複雜度o(n)

leetcode演算法題 最長回文子串行

注意不是回文子串,子串必須是連續!dp i j 表示字串從i到j裡最長的回文子串行長度於是 當s i s j 時 dp i j dp i 1 j 1 2當s i s j 時,dp i j max dp i 1 j dp i j 1 最後返回dp 0 len 1 即可,下面展示自頂向下和自底向上兩種 ...

leetcode刷題 最長回文子串

看了一下題解,還有很多種方法,比如動態規劃,但是看了乙個下午也沒看太懂。所以就先把暴力破解弄懂吧。我這個菜雞,還要多多努力啊。主要問題在,不知道怎麼列舉字串的所有子串,題解中使用的是雙指標辦法,固定左指標,右指標移動得到全部的子串。最後,進行回文字串的驗證時,也是採用的雙指標方法來進行驗證。因此雙指...

最長回文子串 LeetCode 五 最長回文子串

題目 最長回文子串 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。題目解析 回文?當回文串長度為奇數時,比如 北京計程車租出京北 當回文串長度為偶數的時候,比如 1221 以上兩種情況有乙個共同的特點就是有乙個中心,那在 中如何表示中心呢?class solution ...