美文网首页
Leetcode_409_最长回文串_hn

Leetcode_409_最长回文串_hn

作者: 1只特立独行的猪 | 来源:发表于2020-03-19 16:00 被阅读0次

    题目描述

    给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
    在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
    注意:
    假设字符串的长度不会超过 1010。

    示例

    示例 1:

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

    解答方法

    方法一:贪心算法(哈希表)

    思路

    计算每个字符出现的次数,取他的偶数倍,出现次数为奇数的字符只加一次。

    代码

    class Solution:
        def longestPalindrome(self, s: str) -> int:
            dic = collections.Counter(s)
            res = 0
            for L in dic.values():
                res += L // 2 *2
                if res % 2 == 0 and L % 2 ==1:
                    res +=1
            return res
    

    时间复杂度

    O(N),其中 N为字符串 s 的长度。我们需要遍历每个字符一次。

    空间复杂度

    O(S),其中 SS 为字符集大小。

    相关文章

      网友评论

          本文标题:Leetcode_409_最长回文串_hn

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