Skip to content
On this page

5. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:
输入:s = "cbbd"
输出:"bb"

提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成

javascript
/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
  let max = ''
  for (let i = 0; i < s.length; i++) {
    let odd = palindrome(s, i, i)
    let even = palindrome(s, i, i + 1)
    max = max.length > odd.length ? max : odd
    max = max.length > even.length ? max : even
  }
  return max
}

function palindrome(s, left, right) {
  while (left >= 0 && right < s.length && s[left] === s[right]) {
    left--
    right++
  }
  return s.slice(left + 1, right)
}

console.log(longestPalindrome('babad'))
console.log(longestPalindrome('cbbd'))