# 5. 最长回文字
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
function longestPalindrome(s = '') {
if (!s || !s.trim()) return '';
if (s.length === 1) return s;
let start = end = 0;
for (let i = 0; i < s.length; i++) {
const len1 = expandAroundCenter(s, i, i);
const len2 = expandAroundCenter(s, i, i+1);
const len = Math.max(len1, len2)
if (len > end - start + 1) {
const half = len % 2 === 0 ? (len-2)/2 : (len-1)/2;
end = len % 2 === 0 ? i+1 : i;
start = i - half;
end += half;
}
}
function expandAroundCenter(s, left, right) {
let L = left, R = right;
while (L >= 0 && R < s.length && s[L] === s[R]) {
L--;
R++;
}
return R - L - 1;
}
return s.substring(start, end+1);
}
const str = "babad";
console.log(longestPalindrome(str))