求最长回文子串
解题思路
分析例子,得出三种情况。
1.非正常情况,长度小于2,直接返回。
下面为正常情况
2.得出结果长度为奇数。
3.得出结果长度为偶数。
当为奇数时,需要找到这个中心点,中心点向两边扩散都是一一对应相等的,如
aba,cabac。
当为偶数时,需要找到这两个中心点,两个中心点向两边扩散也都是一一对应相等的,如abba,cabbac。
理解了这个思路再看代码就非常好理解了。
代码如下
var longestPalindrome = function(s) {
let result="",res;
function maxLen(m,n){
while(m>=0&&n<s.length&&s[m]==s[n]){
m--;
n++;
}
res=s.slice(m+1,n);
if(res.length>result.length){
result=res;
}
}
for(let i=0;i<s.length;i++){
maxLen(i,i);
maxLen(i,i+1);
}
return result;
};