leetcode409最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:
假设字符串的长度不会超过 1010。

示例 1:

输入:
"abccccdd"

输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
class Solution {
    public int longestPalindrome(String s) {
        int[] arr=new int[70];//计数排序由于字母个数小于70,简单设70个;
        for(char a:s.toCharArray()){
            arr[a-'A']++;//计数,a-A代表与字母与最小字母A的差值存储
        }   
        int temp=0;    
        for(int a:arr){
            temp+=a/2*2;//如果字母个数为偶数,除二乘二后不变,
                        //字母个数为奇数除以二乘以二为字母个数减一(如果该字母个数为奇数则去掉一个为偶数可以构成回文,
                        //由于回文中可以出现一次该字母为奇数所以判断加起来小不小于字符串长度,
                        //小于说明出现字母个数为奇数的可能后加一即可)
        }
        return temp

 

你可能感兴趣的:(Leetcode编程题)