【JS】最长回文子串

最长回文子串

提供一个字符串s,找到s中最长的回文子串。

代码示例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 提供一个字符串s,找到s中最长的回文子串
    function long(s) {
      if (s.length < 2) {	// 如果字符串长度小于2,直接返回原字符串
        return s;
      }
      let maxLen = 1; start = 0;
      function bijiao(left, right) {
      	// 判断左边和右边是否越界,同时最左边的字符是否等于最右边的字符
        while (left >= 0 && right < s.length && s[left] == s[right]) {	
          // 判断是否需要更新回文字符串最大长度以及最大字符串的起始位置	
          if (right - left + 1 > maxLen) {		
            maxLen = right - left + 1;
            start = left;
          }
          left--;
          right++;
        }
      }
      for (let i = 0; i < s.length; ++i) {
        bijiao(i, i + 1);
        bijiao(i - 1, i + 1);
      }
      return s.substring(start, start + maxLen);    // substring() 方法用于提取字符串中介于两个指定下标之间的字符。
    }

    console.log(long("pppppooopppppppp"));    // 打印 pppppoooppppp

  </script>
</body>

</html>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值