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