原题链接:https://leetcode.com/problems/longest-palindrome/description/
原题意思是找出所给字符串能构造出来的最长回文串的长度,主要思路如下:
- 统计每个字符出现次数
- 遍历,如果是偶数则想加,如果是奇数则-1再加
- 返回判断出现次数是否含有奇数,如果有奇数次出现则返回值+1
import java.util.HashMap;
import java.util.Map;
/**
* Created by Joe on 2018/3/16.
* 409. Longest Palindrome
* https://leetcode.com/problems/longest-palindrome/description/
*/
public class P409 {
public int longestPalindrome(String s) {
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {
if (map.containsKey(c)) {
Integer nums = map.get(c);
map.put(c, nums + 1);
} else {
map.put(c, 1);
}
}
int sum = 0;
boolean hasOdd = false;
for (Integer num : map.values()) {
if (num % 2 == 0) {
sum += num;
} else {
sum += num-1;
hasOdd = true;
}
}
return hasOdd ? sum + 1 : sum;
}
}