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
            }
        }
    }
  • 相关阅读:
    Java实现荷兰国旗问题
    Java实现荷兰国旗问题
    QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)
    怀旧老游戏
    我的第一个Chrome插件:天气预报应用
    ddd
    Android 反编译工具
    ASP.NET MVC局部视图
    jQuery类库的设计
    jquery+html三级联动下拉框
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13845411.html
Copyright © 2011-2022 走看看