题目描述
- 给你一个字符串 s,找到 s 中最长的回文子串。
- 示例 1:
- 输入:s = “babad”
- 输出:“bab”
- 解释:“aba” 同样是符合题意的答案。
- 示例 2:
- 输入:s = “cbbd”
- 输出:“bb”
- 示例 3:
- 输入:s = “a”
- 输出:“a”
- 示例 4:
- 输入:s = “ac”
- 输出:“a”
解决办法—中心扩散法
- 主要可以分成两种情况,一种是回文子串长度为奇数(如aba),另一种是回文子串长度为偶数(如abba),循环遍历字符串,对取到的每个值都假设它可能是中心位来判断。
var longestPalindrome = function(s) {
if(s.length<2){
return s;
}
let res="";
for(let i=0;i< s.length;i++){
help(i,i);
help(i,i+1);
}
function help(m,n){
while(m>=0&&n< s.length&&s[m]==s[n]){
m--;
n++;
}
if(n-m-1>res.length){
res= s.slice(m-1,n);
}
}
return res;
};