409. 最长回文串

81 阅读1分钟

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

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

示例 1:

输入: s = "abccccdd"
输出: 7
解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

示例 2:

输入: s = "a"
输入: 1

题解:

/**
 * @param {string} s
 * @return {number}
 */
var longestPalindrome = function (s) {
    const map = new Map();
    let res = 0
    let strArr = s.split("")
    for (let i = 0; i < strArr.length; i++) {
        // 当hash内有该值说明出现偶数次 res+=2 并删除该值
        // 当hash内无值时存入该值
        if (map.has(strArr[i])) {
            map.delete(strArr[i])
            res += 2
        } else {
            map.set(strArr[i])
        }
    }
    // 如果最后hash内还有值证明有出现过基数的情况 res+1
    return res + (map.size > 1 ? 1 : 0)
};

来源:力扣(LeetCode)

链接:leetcode.cn/problems/lo…

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。