最長迴文子串
給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。
示例 1:
輸入: “babad”
輸出: “bab”
注意: “aba” 也是一個有效答案。
示例 2:
輸入: “cbbd”
輸出: “bb”
採用中心擴展法
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if(!s || s.length < 2){
return s;
}
let start = 0,end = 0;
let num = s.length
let centerExpend = (left,right)=>{
while(left>=0&&right<num&&s[left] === s[right]){
left-- ;
right++;
}
return right-left-1; // 返回長度
}
for(let i=0;i<num;i++){
let type1 = centerExpend(i,i); // 中心對稱
let type2 = centerExpend(i,i+1); // 左右對稱
let re = Math.max(type1,type2)
if(re > end - start){
start = i - ((re-1)>>1)
end = i + (re>>1)
}
}
return s.substring(start,end+1)
}
執行用時 :104 ms
內存消耗 :36.7 MB