409. Longest Palindrome

感冒了,好可怜。。
image

回文除了最中间的必须成对出现,so..统计一下每个字母的数量,不成对的只有1个有用,其余舍弃就行了。。。

public class Solution 
{
    public int longestPalindrome(String s) 
    {
        if(s.length() <= 1) return s.length();
        
        int[] letters = new int[100];
        
        for(int i = 0; i < s.length();i++)
        {
            letters[s.charAt(i) - 'A']++;
        }
        
        int res = 0;
        boolean found = false;
        for(int i = 0; i < 100;i++)
        {
            if(letters[i] % 2 == 0) res+=letters[i];
            else
            {
                if(found) res+= letters[i]-1;
                else
                {
                    res += letters[i];
                    found = true;
                }
            }
        }
        
        return res;
    }
}



一刷写了些屎。

public class Solution {
    public int longestPalindrome(String s) {
        int[] letters = new int[256];
        for (char c: s.toCharArray()) {
            letters[c]++;
        }
        
        boolean single = false;
        int res = 0;
        for (int i: letters) {
            if (i % 2 == 0) {
                res += i;
            } else {
                if (!single) {
                    single = true;
                    res += i;
                } else {
                    res += i - 1;
                }
            }
        }
        
        return res;
        
    }
}
posted @ 2016-10-03 03:35  哇呀呀..生气啦~  阅读(145)  评论(0编辑  收藏  举报