思路
若要形成最長的迴文串,則迴文串中只會出現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();//無奇數
}
};