给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2:
输入: "cbbd" 输出: "bb"
/**
* 中心扩散法
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if(!s.length){
return '';
}
var strLen = s.length,
maxStart = 0,
maxLen = 0;
for(var i = 0; i < strLen; i++){
var left = i - 1,
right = i + 1,
len = 1;
while(left >= 0 && s.charAt(left) == s.charAt(i)){
left--;
len++;
}
while(right < strLen && s.charAt(right) == s.charAt(i)){
right++;
len++;
}
while(left >= 0 && right < strLen && s.charAt(left) == s.charAt(right)){
left--;
right++;
len += 2;
}
if(maxLen < len){
maxLen = len;
maxStart = left;
}
}
return s.substring(maxStart + 1, maxStart + maxLen + 1)
};