5 最長回文子串

2021-10-07 05:46:31 字數 1299 閱讀 4691

5. 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: "babad"

輸出: "bab"

注意: "aba" 也是乙個有效答案。

示例 2:

輸入: "cbbd"

輸出: "bb"

class

solution

return res;

}private string palindrome

(string s,

int l,

int r)

else

}// system.out.println(l);

// system.out.println(r);

string res = s.

substring

(l+1

,r);

return res;

}}

思路:以乙個字元為中心,分別向左右移動,但此刻左右對應字串相同時則繼續左右移動,

直至二者不相同為止。但有兩種情況,第一種是得到的答案回文串長度為奇數,例如 aba,

第二種是得到的答案回文串長度為偶數,例如 abba。

示例:babad

1) i=0;

palindrome(s,0,0);

l=0;r=0;

s1 ='b'; s2= 'b';s1==s2;故 l--;r++;//l=-1;r=1;

迴圈結束,返回 s.substring(s,0,1) = "b";

palindrome(s,0,1);

l=0;r=1;

s1='b';s2='a';s1!=s2;//

迴圈結束,返回 s.substring(s,1,1)="";

2) i =1;

palindrome(s,1,1);

l=1;r=1;

s1 = 'a';s2='a';l++;r--;// l =0;r=2;

s1 = 'b';s2='b';l++;r--;// l =-1;r=3;

迴圈結束,返回s.substring(s,0,3) = "bab";

palindrome(s,1,2);

l=1;r=2;

s1 = 'a';s2='b';

迴圈結束;返回s.substring(2,2) = "";

3)i=2;以此類推

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 方法1 用馬拉車演算法 字串動態規劃 來求最長回文子串時間複雜度可以達到o n 但是部落格裡面有個小失誤 這個id應該不是最大回文...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution def longestpalindrome self,s k len s olist...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 這道題比較船艇的應該是dp求法,但鄙人的dp特別特別的差勁。所以我選用中心擴充套件演算法,掃一遍所有節點,把被掃...