给定一个包含大小写字母的字符串,找到这些字母构造成的最长的回文串。区分大小写。
输入“abccccdd”
输出7. “dccaccd”。
class Solution
{
public:
int longestPalindrome(string s)
{
if(s.size()==0 ||s.size()==1) return s.size();
unordered_map<char,int> mapa;//统计字符个数
int length=0;//偶数字符的长度
int flag=0;//标记是否含有中间点
for(auto e:s) mapa[e]++;
for(int i=0;i!=mapa.size();i++)
{
if(mapa[i]%2==0) length+=mapa[i];
else
{
length+=mapa[i]-1;//若为奇数,则丢弃一位
flag=1;//丢弃的一位可以作为中间点
}
}
return length+flag;//偶数部分+中间点
}
};