409. 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:
假设字符串的长度不会超过 1010。

示例 1:
输入:
"abccccdd"
输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

题解

/**
 * @param {string} s
 * @return {number}
 */
var longestPalindrome = function(s) {
    s = s.split('').sort()
    let res = [], n = 0, z = 0
    for (let i = 0; i < s.length; i++) {
        n++
        if (s[i] != s[i + 1]) {
            if (n % 2 == 0 && n >= 2) {
                res.push(n)
            } else if (n % 2 != 0) {
                z = 1
                if (n >= 2) {
                    res.push(n - 1)
                }
            }
            n = 0
        }
    }
    if (z == 1) {
        res.push(1)
    }
    return res.reduce((a, b) => a + b)
};

发表评论

您的电子邮箱地址不会被公开。