思路
若要形成最长的回文串,则回文串中只会出现1次单个字符,因此只需统计字符串中有多少个字符其数目为奇数,s.size()-n个为奇数个数的字符+1即为最长回文串
如果字符串没有出现奇数个数目的字符,则s.size()即为最长回文串
代码
class Solution {
public:
int longestPalindrome(string s) {
unordered_map<char, int> sMap;
for (char c:s)
{
sMap[c]++;
}
int oddNum = 0;
for (pair<char,int> it:sMap)
{
if (it.second % 2 == 1) oddNum++;
}
if (oddNum > 0) return s.size() - oddNum + 1;//s.size()-为奇数个的字符数目+1
else return s.size();//无奇数
}
};