給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是乙個有效答案。
示例2:
輸入: "cbbd"
輸出: "bb"
1.映象字串先把這個字串掉個個兒,然後再去尋找裡面的相同序列子串,但是有個問題需要同時注意一下,就是找到了相同的需要去比較索引位置,因為如果索引位置不滿足一定關係的話有相同字串也不一定就是原來的那個,或者直接像下面這樣,先把應該存在的索引求出來再去找,不過下面這個方法時間複雜度依舊比較高(o(n^2)),也就比暴力破解好一丟吧…
/**
* @param s
* @return
*/var
longestpalindrome
=function
(s)}
}return maxstr;
};
2.中心擴充套件法也就是說,這裡我們只遍歷一遍,然後根據回文序列的特性,讓其依次從兩邊拓展(這裡分兩種情況,因為會有』aba』和』abba』兩種不同性質的回文序列),然後記錄最大的長度。
這個時間複雜度就比較低了,執行時間可以很快。
/**
* @param s
* @return
*/var
longestpalindrome
=function
(s)let start =
0,end =0;
let n = s.length;
// 中心擴充套件法
letcenterexpend
=(left,right)
=>
return right - left -1;
}for
(let i =
0;i < n;i++)}
return s.
substring
(start,end+1)
;};
其他的一些演算法暫時還沒仔細研究,還好我的頭髮及時止住了我。 LeetCode 最長回文子串 5
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 方法一 暴力法 時間複雜度為o n 3 會超時 思路 最笨的方法,遍歷所有子串s,並判斷s的反轉s 與...
LeetCode5最長回文子串
給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...
LeetCode 5 最長回文子串
問題描述 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 解決方案 中心擴充套件演算法 事實上,只需使用恆定的空間,我們就可以在 o n 2 的時間內解決這個問題...