409. Longest Palindrome

来源:互联网 发布:ip反查域名的网站 编辑:程序博客网 时间:2024/06/05 18:55

1.题目

    Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.

This is case sensitive, for example "Aa" is not considered a palindrome here.

Note:
Assume the length of given string will not exceed 1,010.

2.分析

    这道easy难度的题,确实也没有多少难度,根据题目要求,找能组成的最长回文字符串,不用考虑字符串原顺序。所以根据题目给的案例,自己好好思索,不难返现,其实这道题就是再找可以配多少对,然后如果有奇数,就在结果的基础上,加1.

3.实现

   public class Solution {
    public int longestPalindrome(String s) {
        int[] result = new int[52];
        if(s==null||s.length()==0){
            return 0;
        }
        int number = 0;
        int remark = 0;
        for(int i=0;i<s.length();i++){
            char tem = s.charAt(i);
            if(tem>='a'&&tem<='z'){
                result[tem-97]++;
            }
            if(tem>='A'&&tem<='Z'){
                result[tem-65+26]++;
            }
        }
        for(int i=0;i<52;i++){
            if(result[i]%2==0){
                number += result[i];
            }else{
                remark++;
                number += result[i]-1;
            }
        }
        if(remark==0){
            return number;
        }
        return number+1;
    }

4.总结

    无论解题还是做工程,边界处理很重要,然后就是循环条件与结束条件都要搞清楚,不然出了问题,感觉逻辑都对,就是找不到问题在哪。比如这里,我把‘a’~'z'的边界搞错,找了好长时间,最后怀疑自己的思路?