leecode刷題2 最長回文子串

2021-09-24 07:45:43 字數 674 閱讀 6735

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

最開始的想法是暴力求解最長的回文子串,具體的思路如下

class solution 

for(int i=0;ifor(int j=i;jif(plaindrome(temp) && result.length()return result;

}public boolean plaindrome(string temp)else

}return

true;

}}複製**

後來考慮回文的驗證方式,要麼是奇數的回文,要麼是偶數的回文,反正回文必須滿足,若該串是回文,則向左向右各乙個字元相等也必然是回文。

class solution 

for(int i=0;ifor(int j=0;i-j>=0&&i+jif(s.charat(i-j) == s.charat(i+j))else}}

for(int i=1;iif(s.charat(i-1) == s.charat(i))else}}

}return result;

}}複製**

此外還有一種比較複雜的求解方式是通過manacher演算法,該演算法目前還沒有看懂。

leecode刷題之第5題 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 從中間向兩邊遍歷比暴力破解法更好,當兩邊的字母不相同時會終止此位置的遍歷,所以速度更快。class s...

leecode最長回文子串

基本上都會想到中心擴散,但是這個中心擴散有個奇數偶數的問題,所以優化了下,借用了部分馬拉車演算法的思想 解決問題,記憶體消耗還可以優化。初版解決問題為先。class solution str tmp echo str for i 0 i strlen str i return this format...

leetcode刷題 最長回文子串

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