zoukankan      html  css  js  c++  java
  • 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.

    Example:

    Input:
    "abccccdd"
    
    Output:
    7
    
    Explanation:
    One longest palindrome that can be built is "dccaccd", whose length is 7.
    
     Approach #1: C++.
    class Solution {
    public:
        int longestPalindrome(string s) {
            unordered_map<char, int> mp;
            int nums = 0;
            bool flag = false;
            for (int i = 0; i < s.length(); ++i) 
                mp[s[i]]++;
            for (auto it = mp.begin(); it != mp.end(); ++it) {
                nums += it->second/2 * 2;
                if (it->second % 2 != 0 && !flag) 
                    flag = true;
            }
            if (flag) nums++;
            return nums;
        }
    private:
        static bool cmp(int a, int b) {
            return a >= b;
        }
    };
    

      

    Approach #2: Java.

    class Solution {
        public int longestPalindrome(String s) {
            int[] count = new int[128];
            for (char c : s.toCharArray()) 
                count[c]++;
            int ans = 0;
            for (int v : count) {
                ans += v / 2 * 2;
                if (ans % 2 == 0 && v % 2 == 1)
                    ans++;
            }
            return ans;
        }
    }
    

      

    Approach #3: Python.

    class Solution(object):
        def longestPalindrome(self, s):
            """
            :type s: str
            :rtype: int
            """
            ans = 0
            for v in collections.Counter(s).itervalues():
                ans += v / 2 * 2
                if ans % 2 == 0 and v % 2 == 1:
                    ans += 1
                
            return ans
    

      

    Time SubmittedStatusRuntimeLanguage
    a few seconds ago Accepted 44 ms python
    2 minutes ago Accepted 5 ms java
    5 minutes ago Accepted 8 ms cpp
    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    ui自动化-则神第一天04-学习方法
    PHP unserialize()
    路径中 斜杠/和反斜杠 的区别
    PhpStorm 克隆下来的项目改动,版本控制不起效果
    PhpStorm 回到上次编辑位置的快捷键
    mysql max_allowed_packet查询和修改
    PHP大批量插入数据库的3种方法和速度对比
    mysql5.7.23安装详细过程
    JS 放大镜
    aviary 图片编辑器
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9969751.html
Copyright © 2011-2022 走看看