题目链接:https://leetcode-cn.com/problems/longest-palindrome/description/
题目描述:
算法描述:
分析下题目我们可以容易知道,只要某个字符的个数为偶数个的时候,那么这些字符一定可以构成回文数(因为题目没有要求这个回文数的顺序是怎样的),当某个字符的个数为为奇数个的时候,向下取偶就行了。
所以我们只需要统计原字符串中每个字符出现的次数,然后将其全部向下取偶数(即4->4
、5->4
)再求和,以及如果存在出现奇数次的字符,则在和的基础上再加1,就是最终结果了。
代码如下:
class Solution {
public int longestPalindrome(String s) {
int [] countArray=new int['z'-'A'+1];
int count=0;
boolean isOdd=false;
for (char c : s.toCharArray()) {
countArray[c-'A']++;
}
for(int i:countArray) {
count+=i/2;
if(!isOdd) {
isOdd=(i%2)!=0;
}
}
return count*2+ (isOdd?1:0);
}
}