最长回文串
难度:简单
这道题比较简单,找出最长的回文串,其实就是找出有多少对相同的字符,把相同的字符放两边,如果字符串中还有剩余单独的字符,中间还可以多放一个。那我们可以利用一维数组存放每个字符出现的次数,再遍历一维数组,累加出现 大于2的次数(注意:当出现奇数次需要-1,比如出现次数为9,那实际上能累加到的长度应该为8),最后再判断res与字符串长度是否相等,若不相等则再**+1**返回(回文串中间的元素可以只出现1次)
代码如下:
public static int longestPalindrome(String s) {
int[] nums = new int[128];
for (int i = 0; i < s.length(); i++) {
nums[s.charAt(i)]++;
}
int res = 0;
for (int num : nums){
if (num>=2){
res += num/2*2;
}
if (num%2==1){
ext = 1;
}
}
return res == s.length()? res:res+1;
}
执行结果:通过