想法是对的,但是不会用代码实现
409 最长回文串
给定一个包含大写字母和小写字母的字符串
s
,返回 通过这些字母构造成的 最长的回文串 。在构造过程中,请注意 区分大小写 。比如
"Aa"
不能当做一个回文字符串。示例 1:
输入:s = "abccccdd" 输出:7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
代码如下
int longestPalindrome(char * s){
// 我的思路:统计给定字符串中的字符数
// 把偶数个的都算上,加上奇数个中数量最多的那一个即可
// 有点错误,奇数次应该是加上他减一次
int c[128]={0},ret=0;
for(int i=0;i<strlen(s);i++)
{
c[s[i]]++;
}
for(int i=0;i<128;i++)
{
ret+=c[i]-c[i]%2;
}
return ret+(ret!=strlen(s));
// 代码为题解中的一篇
}