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

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

    示例 1:

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

    输入:s = “a”
    输入:1
    示例 3:

    输入:s = “bb”
    输入: 2

    1. /**
    2. * @param {string} s
    3. * @return {number}
    4. */
    5. var longestPalindrome = function (s) {
    6. let map = new Map();
    7. for (let str of s) {
    8. map.set(str, (map.get(str) || 0) + 1)
    9. }
    10. let res = 0, isOdd = false;
    11. map.forEach((value) => {
    12. res += value
    13. if (value % 2 !== 0) {
    14. res -= 1;
    15. isOdd = true
    16. }
    17. })
    18. // 是奇数加1
    19. return res + (isOdd ? 1 : 0)
    20. };

    image.png