力扣第五题 最长回文子串

本文介绍了一种使用动态规划解决最长回文子串问题的 JavaScript 实现。通过实例讲解了如何处理边界情况、中心扩散法和双指针技巧,以及如何找到字符串中具有最长回文性质的子串。

5. 最长回文子串

在这里插入图片描述

var longestPalindrome = function(s) {
  //如果字符串小于等于1则回文串就是它本身
    if(s.length<=1)
      {
        return s;
      }
    //这里最大长度初值为1,是因为字符串最小回文子串的长度就是1
    let maxlength=1;
    let i=0;
    let start=0;
  //设置一个方法输入左和右的index值,意在实现回文字符串的两种情况
    function expandAround(left,right){
      //while 遍历左右是否越界以及左右值是否相等
      while(left>=0&&right<s.length&&s[left]==s[right])
        {
          //左边标签往左,右边标签往右
          left--;
          right++;
        }
      //判断该字串的长度是否大于最大长度、注意这里right-1和ledt+1
      if(((right-1)-(left+1)+1)>maxlength)
        {
          maxlength=Math.max(maxlength,((right-1)-(left+1)+1));
          start=left+1;
        }
    }
  //循环遍历字符串
    for(i=0;i<s.length;i++)
      {
        //这里就是解决CABAC这种情况 把每个index都看成一个中心
        expandAround(i-1,i+1);
        //这里解决ABBA这种情况 把BB看成一个整体
        expandAround(i,i+1)
      }
    //返回s字串
    return s.substring(start,start+maxlength);
};

s.substring(statr,end);
可以截取字符串的子串

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值