题目:给你一个字符串 s,找到 s 中最长的回文子串。leetcode题目链接
我的JavaScript解法
var longestPalindrome = function(s) {
const palindrome = (s, left, right) => {
while (left >=0 && right < s.length && s[left] === s[right]) {
left--;
right++;
}
return s.substring(left+1, right)
}
let longest = ''
for(let i = 0; i < s.length; i++) {
const s1 = palindrome(s, i, i);
const s2 = palindrome(s, i, i+1);
longest = longest.length > s1.length ? longest : s1;
longest = longest.length > s2.length ? longest : s2;
}
return longest
};
解析: 把字符串的每一个字符都设定为中心并用枚举所有的“回文中心”并尝试扩充,直到无法扩充。 需要特殊解释的是,当回文长度为奇数时,palindrome(s, i, i); 当回文长度为偶数时,palindrome(s, i, i+1);
复杂度分析:
- 时间复杂度:
- 空间复杂度: