LeetCode 第 409 题:最长回文串
2023-02-16 本文已影响0人
放开那个BUG
1、前言
image.png2、思路
这道题不可能让你先组合一堆回文串,然后让你计算出最大回文串的长度,因为时间复杂度会爆炸。所以要找到回文串的规律:回文串分为奇数个和偶数个,只需要获取字符出现次数的偶数即可。因为奇数只有一次,所以只需要记一次。
3、代码
class Solution {
public int longestPalindrome(String s) {
Map<Character, Integer> map = new HashMap<>();
for(char ch : s.toCharArray()){
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
int res = 0, odd = 0;
for(Character ch : map.keySet()){
int fre = map.get(ch);
res += fre / 2 * 2;
if(fre % 2 == 1){
odd = 1;
}
}
return res + odd;
}
}