[leetcode]409. Longest Palindrome
Analysis
everyday is the first day of your rest life—— [间歇性迷茫~]
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.
给定一串字符,判断其组成的最大回文串多长,对大小写敏感。记录每个字符的数目cnt,如果是偶数就可以全部用上,如果是奇数则可以用cnt-1个,注意因为回文串中间可以有一个单个字符:xxxaxxx这样(只有一个a),所以最后如果数目小于字符串大小,则可以再加一个字符在最中间。
Implement
class Solution {
public:
int longestPalindrome(string s) {
map<char, int> mymap;
int len = s.length();
for(int i=0; i<len; i++){
if(mymap.find(s[i]) == mymap.end())
mymap[s[i]] = 1;
else
mymap[s[i]]++;
}
map<char, int>::iterator it;
int cnt = 0;
for(it = mymap.begin(); it != mymap.end(); it++){
if(it->second%2 == 0)
cnt += it->second;
else
cnt += (it->second-1);
}
if(cnt < len)
cnt += 1;
return cnt;
}
};