題目: LeetCode - 409. Longest Palindrome

題目說明

給一個字串,求字串中的所有字元能組成的最大回文長度。

解題思路

回文的形式有兩種,一種是奇數個數,一種是偶數個數,而奇數個數的形式就是偶數個數加上任意一個字元,所以我們先計算每個字元出現的次數,再判斷所有字元裡面是否有出現奇數個數的次數,最後將次數加入長度即可。

參考解法

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int longestPalindrome(string s) {
int l = 0, odd = 0;
unordered_map<char, int> _m;
for(auto c : s) ++_m[c];
for(auto m : _m) { if(m.second % 2) odd = 1; l += m.second / 2 * 2; }
return l + odd;
}
};