题目:
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
来源:力扣(LeetCode)
emm 我这破脑瓜子想了很久
class Solution {
public:
int longestPalindrome(string s) {
int a[1011] = {0};
for(int i=0;i<s.size();i++){
if('A'<=s[i] && s[i]<='Z')
a[s[i]-'A']++;
if('a'<=s[i] && s[i]<='z')
a[s[i]-'a'+26]++;
}
int sum=0,k=0;
for(int i=0;i<52;i++){
if(a[i]%2 == 0 && a[i]!=0){
sum += a[i];
cout << k++;
}
if(a[i]%2 == 1){
if(sum%2 == 0){
sum += a[i];
}
else{
sum += a[i]-1;
cout << 'A';
}
}
}
return sum;
}
};