欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript算法系列--leetcode最长回文子串

程序员文章站 2024-03-16 12:51:10
...

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

实现如下:

  /**
   * @param {string} s
   * @return {string}
   */
  var longestPalindrome = function(s) {
    if (!s.length) return s
    const palindromeArr = []
    for (let i = 0; i < s.length; i++) {
      let j = 0
      let k = 0
      while (s[i + j] && s[i - j] && s[i + j] === s[i - j]) {
        j++
      }
      palindromeArr.push(s.slice(i + 1 - j, i + j))
      while (s[i - k] && s[i + 1 + k] && s[i - k] === s[i + 1 + k]) {
        k++
      }
      palindromeArr.push(s.slice(i + 1 - k, i + k + 1))
    }
    return palindromeArr.sort((a, b) => {
      return b.length - a.length
    })[0]
  };

如有更好解法,欢迎留言探讨。