LeetCode 第 409 题:最长回文串

2023-02-16  本文已影响0人  放开那个BUG

1、前言

image.png

2、思路

这道题不可能让你先组合一堆回文串,然后让你计算出最大回文串的长度,因为时间复杂度会爆炸。所以要找到回文串的规律:回文串分为奇数个和偶数个,只需要获取字符出现次数的偶数即可。因为奇数只有一次,所以只需要记一次。

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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读