最长回文字串

07/05/2021

leetcode-最长回文字串

题目描述

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

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

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

输入:s = "cbbd"
输出:"bb"

提示:

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

本人题解

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    let max = 0, left, right, maxs = ''
    s.split('').forEach((i, n, arr) => {
        let flag = true, cur = 1, curs = i, sameL = true;
        left = n-1, right = n+1
        while (flag) {
            if (arr[left] && arr[left] == i && sameL) {
                curs = arr[left] + curs
                cur++
                left--;
            } else if (arr[left] && arr[right] && arr[left] == arr[right]) {
                curs = arr[left] + curs + arr[right]
                cur += 2
                left--, right++;
                sameL = false
            } else {
                flag = false
            }
        }
        if (cur > max) {
            max = cur
            maxs = curs
        }
    })
    return maxs;
};

分析

忘了。以后再补