跳转至

409.最长回文串 (Easy)*

题目描述*

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

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

示例*

输入: "abccccdd"

输出: 7

可以构造的最长的回文串是"dccaccd", 它的长度是 7。

注意*

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

代码*

要求的是用给定的字符可以组成的最长回文串长度,偶数个的肯定可以,有单数的可以放中间一个。

class Solution {
public:
    int longestPalindrome(string s) {
        int cnt[128] = { 0 };
        for(int i = 0; i < s.length(); i++) {
            cnt[s[i]]++;
        }
        int res = 0;
        for(int i : cnt) {
            res += (cnt / 2) * 2;
        }
        if(res < s.length()) {
            res++;
        }
        return res;
    }
};

最后更新: July 23, 2022