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