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
            }
        }
    }
  • 相关阅读:
    (三)数据预处理过程简介
    (二)数据挖掘需要哪些技术
    (一) 什么是数据挖掘?
    怎样提问呢?
    什么是自我意识
    高效能人士的七个习惯
    “U”型读书法
    CMDB学习之一
    层级选择器
    css选择器
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13845411.html
Copyright © 2011-2022 走看看