题目:给定一个包含大小写字母和小写字母的字符串s,返回通过这些字母构造的最长回文串。示例;输入s=”abccccdd"输出7
可以构造最长回文串是“dccaccd"
public class solution {
public int longestPalindrome(String s)
{
int []hash=new int[256];//使用256以覆盖所有ASCII码
for(int i=0;i<s.length();i++)
{
hash[s.charAt(i)]++;//统计每个字符出现的次数
}
int ret=0;
for(int x:hash)
{
ret+=x/2*2;//累加所有字符的偶数次部分
}
//如果总长度小于原字符串,说明有奇数字符,可+1作为中心
return ret<s.length()?ret+1:ret;
}
public static void main(String[] args) {
solution solution=new solution();
String s="abccccdd";
System.out.println(solution.longestPalindrome(s));
}
}