zoukankan      html  css  js  c++  java
  • 409. Longest Palindrome

    package LeetCode_409
    
    /**
     * 409. Longest Palindrome
     * https://leetcode.com/problems/longest-palindrome/
     *
     * Given a string s which consists of lowercase or uppercase letters,
     * return the length of the longest palindrome that can be built with those letters.
    Letters are case sensitive, for example, "Aa" is not considered a palindrome here.
    
    Example 1:
    Input: s = "abccccdd"
    Output: 7
    Explanation:
    One longest palindrome that can be built is "dccaccd", whose length is 7.
    
    Example 2:
    Input: s = "a"
    Output: 1
    
    Example 3:
    Input: s = "bb"
    Output: 2
    
    Constraints:
    1. 1 <= s.length <= 2000
    2. s consits of lower-case and/or upper-case English letters only.
     * */
    class Solution {
        /*
        * solution: array, calculate the odd count, Time complexity:O(n), Space complexity:O(128)
        * */
        fun longestPalindrome(s: String): Int {
            val array = IntArray(128)
            //'a': ascii is 97
            //'A': ascii is 65
            for (c in s) {
                if (c - 'a' >= 97) {
                    //a..z
                    array[c - 'a']++
                } else {
                    //A..Z
                    array[c - 'A']++
                }
            }
            //scan array, calculate the odd count
            var oddCount = 0
            for (i in array.indices) {
                if (array[i] % 2 != 0) {
                    oddCount++
                }
            }
            if (oddCount > 1) {
                /*
                * for example: abccccdd, a,b the number of occurrence time is odd, so we can build these string:
                * dccaccd or dccbccd, both length are 7
                * */
                return s.length - oddCount + 1
            } else {
                //here main all char can use to build
                return s.length
            }
        }
    }
  • 相关阅读:
    ide 安装eval reset插件 Pycharm 永久破解
    Centos7.9安装RabbitMQ
    Linux环境下安装Centos7.9时没有图形界面的解决办法
    JS,对部分值base64解码
    consul 配置备份
    AutoMapper后遇到的“Missing map”与“Missing type map configuration”问题
    osg绘制圆柱体
    IfcFlowMovingDevice
    opencv absdiff
    IfcFlowMovingDeviceType
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13845411.html
Copyright © 2011-2022 走看看