LeetCode 409. 最长回文串

//回文串,偶数个的字符可够成回文串,然后最中间的字符可为奇数个
class Solution {
    public int longestPalindrome(String s) {
        //定义一个大小写字母的计数器,统计每个字母出现的次数
        int[] count = new int[128];
        //遍历字符串s,将出现的每个字符在计数器中计数
        for(int i = 0; i < s.length();i++){
            char c = s.charAt(i);
            count[c]++;
        }
        //定义一个长度变量,统计最长回文串的长度
        int res = 0;
        //构建回文串
        for(int num : count){
            // num/2 是统计有几对字符可构建回文串,*2 是统计回文串的长度
            res += num / 2 * 2;
        }
        //遍历完后,比如有的字符出现了3次,但自能用2次,因为回文串中心还可以有一个元素,所以可以在将回文串的长度+1,仅一次。
        if(res < s.length()){
            res += 1;
        }
        //返回结果
        return res;
    }
}

 

posted @ 2020-10-28 21:21  peanut_zh  阅读(62)  评论(0)    收藏  举报