問題描述:
給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba"也是乙個有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
解決方案:
中心擴充套件演算法
事實上,只需使用恆定的空間,我們就可以在 o(n^2)的時間內解決這個問題。
我們觀察到回文中心的兩側互為映象。因此,回文可以從它的中心展開,並且只有 2n −1 個這樣的中心。
你可能會問,為什麼會是 2n −1 個,而不是 n 個中心?原因在於所含字母數為偶數的回文的中心可以處於兩字母之間(例如 「abba」 的中心在兩個 『b』 之間)。
複雜度分析
**實現:
public string longestpalindrome(string s)
int start = 0, end = 0;
for(int i =0;iend-start)
}return s.substring(start,end+1);
}private int expandaroundcenter(string s,int left,int right){
int l = left,r = right;
while(l>=0&&r有精力的時候看看這個:時間複雜度和空間複雜度都是o(n)
LeetCode5最長回文子串
給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...
leetcode5 最長回文子串
遞推式 1 一般 s i 1 s j 1 and j i and j i len s i 1,j 1 2 初始化dp矩陣對角線的值為 true,相鄰兩個元素相等時dp i i 1 為true 初始化回文串起始位置和長度。def longestpalindrome s n len s if s ret...
leetcode(5,最長回文子串)
演算法題也刷了很多,正兒八經去仔細思考回文的題目,這還是第一道。給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 自己思考的比較簡單,最初想的就是暴力解題法,對回...