Title:Longest Palindrome 409
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/longest-palindrome/
1. Map
时间复杂度:O(n),一层for循环,最长遍历为字符串的长度。
空间复杂度:O(n),申请Map。
/**
* 将每个字符存储到Map中,如果value为偶数直接加上,如果value为奇数,加上其value-1,存在奇数,最后加1作为中间的字符
* @param s
* @return
*/
public static int longestPalindrome(String s) {
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
int count = 0;
boolean flag = false;
for (Character character : map.keySet()) {
if (map.get(character) % 2 == 0) {
count += map.get(character);
}
if (map.get(character) % 2 == 1) {
count += map.get(character) - 1;
flag = true;
}
}
if (flag) {
return count + 1;
}
return count;
}