题目要求
给你一个字符串 s
,找到 s
中最长的回文子串。
示例
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
思路
可以一遍遍遍历,从中心往两边扩散的思想来实现本题,再设置一个最大值max减少遍历的次数
var longestPalindrome = function(s) {
// 中心扩散
let max = 0, str = s[0]
function isPali(l, r) {
while(l >= 0 && r < s.length && s[l] == s[r]) {
if(r - l + 1 > max) {
max = r - l + 1
str = s.substr(l, max)
}
l--
r++
}
}
let l = 0
while(l < s.length) {
// 考虑奇偶
isPali(l, l+1)
isPali(l-1, l+1)
l++
}
return str
};
效果
速度比较快这种方法,大家有什么其他的方法,欢迎评论区留言。