最长回文子串(力扣)

题目要求

给你一个字符串 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
};

效果

 速度比较快这种方法,大家有什么其他的方法,欢迎评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值