最长回文子串
给定一个字符串 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