题目链接:https://leetcode.com/problems/longest-palindrome/
Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.
This is case sensitive, for example "Aa"
is not considered a palindrome here.
Note:
Assume the length of given string will not exceed 1,010.
Example:
Input: "abccccdd" Output: 7 Explanation: One longest palindrome that can be built is "dccaccd", whose length is 7.
思路:对每个字符计数,如果还要做个标记是否有奇数个字符,然后对偶数的字符都可以最终组成回文,还可以带一个奇数字符.
代码如下:
class Solution {
public:
int longestPalindrome(string s) {
unordered_map<char, int> hash;
for(auto ch: s) hash[ch]++;
int ans = 0, odd = 0;
for(auto val: hash)
{
if(val.second&1) odd = 1;
ans += val.second & 0xfffffffe;
}
return ans + odd;
}
};