美文网首页
数据结构与算法-最长回文串409(java)

数据结构与算法-最长回文串409(java)

作者: 这里有颗小螺帽 | 来源:发表于2020-02-24 23:26 被阅读0次

    tags:

    • 字符串
      categories:
    • 数据结构与算法

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

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

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

    示例 1:

    输入:
    "abccccdd"

    输出:
    7

    解释:
    我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-palindrome
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题1(需要判断奇偶):

    class Solution {
        public int longestPalindrome(String s) {
            HashMap<Character, Integer> map = new HashMap<>();
            char[] ch = s.toCharArray();
            for (char c : ch) {
                if (!map.containsKey(c)) {
                    map.put(c, 0);
                }
                map.put(c,map.get(c)+1);
            }
            int length = 0;
            boolean odd = false;
            for (int i :map.values()){
                if (i%2 == 1)
                    odd = true;
                length += i/2 *2;
            }
            if (odd)
                length++;
           return length;
    
        }
    }
    

    解题2(不需要判断奇偶):

    class Solution {
        public int longestPalindrome(String s) {
            HashMap<Character, Integer> map = new HashMap<>();
            char[] ch = s.toCharArray();
            for (char c : ch) {
                if (!map.containsKey(c)) {
                    map.put(c, 0);
                }
                map.put(c,map.get(c)+1);
            }
            int length = 0;
            for (int i :map.values()){
                length += i/2 *2;
            }
            if (length < s.length())
                length++;
            return length;
    
        }
    }
    

    相关文章

      网友评论

          本文标题:数据结构与算法-最长回文串409(java)

          本文链接:https://www.haomeiwen.com/subject/bevgqhtx.html