频道栏目
首页 > 考试 > 其他 > 正文
【Leetcode】409. Longest Palindrome
2017-01-01 09:55:00         来源:举头天外望,无我这般人  
收藏   我要投稿

【Leetcode】409. Longest Palindrome

题目:
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.

思路:
easy 统计每种字符出现次数,分奇偶情况讨论。

算法:

    public int longestPalindrome(String s) {
        if (s.length() == 0)
            return 0;
        int lm[] = new int[26];
        int um[] = new int[26];

        for (char c : s.toCharArray()) {
            if (Character.isLowerCase(c))
                lm[c - 'a']++;
            else
                um[c - 'A']++;
        }

        int count = 0;
        boolean flag = false;// 是否有单个字符

        for (int num : lm) {
            if (num % 2 == 0) {
                count += num;
            } else {
                if (flag) {
                    count += num - 1;
                } else {
                    count += num;
                    flag = true;
                }
            }
        }

        for (int num : um) {
            if (num % 2 == 0) {
                count += num;
            } else {
                if (flag) {
                    count += num - 1;
                } else {
                    count += num;
                    flag = true;
                }
            }
        }

        return count;

    }
点击复制链接 与好友分享!回本站首页
上一篇:【Leetcode】410. Split Array Largest Sum
下一篇:HDU 5514 Frogs(容斥原理)——2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站