思路清奇的一个算法:
int longestPalindrome(char * s){
int i;
int c[128]={0};
int ret = 0;
//统计s中字符出现的次数
for(i = 0;i < strlen(s);i++)
{
c[s[i]]++; //s[i]代表每个字母的ASCII值,对于c[]来说就是每个字母个数存储的位置
}
for(int i=0;i<128;i++)
{
ret+=c[i]-c[i]%2;
}
//如果ret的值与s的长度不同的话,就说明有奇数个字母,(假设奇数个字母a是3个,则在累计ret时会被减去1,变成偶数,等最后判断ret与s长度时,最后再只会加1作为中心回文),(假设奇数个字母b是1个,则在累计ret时会被减去1,变成0。)。
return ret + (ret != strlen(s));
}