题目
代码部分一(14ms 63.68%)
class Solution {
public int longestPalindrome(String s) {
int len = s.length();
Map<Character, Integer> map = new HashMap<>();
for(int i = 0; i < len; i++){
map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0)+1);
}
int odd = 0;
int even = 0;
for(char key : map.keySet()){
if(map.get(key) % 2 == 0){
even += map.get(key);
}else if(map.get(key) % 2 != 0){
even += map.get(key)-1;
odd = 1;
}
}
return odd + even;
}
}
代码部分二(9ms 91.86%)
class Solution {
public int longestPalindrome(String s) {
char ch[] = s.toCharArray();
int lowerCount[] = new int[26];
int upperCount[] = new int[26];
int odd = 0;
int len = s.length();
for(int i = 0; i < len; i++){
if(ch[i] < 'a') upperCount[ch[i] - 'A']++;
else lowerCount[ch[i] - 'a']++;
}
for(int i = 0; i < 26; i++){
if(lowerCount[i] % 2 == 1) odd++;
if(upperCount[i] % 2 == 1) odd++;
}
if(odd == 0)
return len;
else return len - odd + 1;
}
}