力扣,最长回文子串,js解法

58 阅读1分钟

题目:给你一个字符串 s,找到 s 中最长的回文子串。

首先得分长度奇偶去考虑,在逐个循环的数往左右发散,然后在存储比较之下比较长的长度

源码:

var longestPalindrome = function(s) {
  let res = ''
  for (let i=0;i<s.length;i++){
    //当目标字符串的长度为奇数时
    let left = i-1,right = i+1
    while (left>=0&&right<s.length&&s[left]===s[right]){
      left--
      right++
    }
    if (res.length<right-left-1){
      res = s.substring(left+1,right)
    }

    //当目标字符串的长度为偶数时
    left = i
    right = i+1
    while (left>=0&&right<s.length&&s[left]===s[right]){
      left--
      right++
    }
    if (res.length<right-left-1){
      res = s.substring(left+1,right)
    }
  }
  return res
}

结果:

image.png