leedcode-最长回文串

自己写的:

复制代码
class Solution:
    def longestPalindrome(self, s: str) -> int:
        count = 0  # 用于计算最长回文串的长度
        hash = {}  # 用于统计每个字符出现的次数的字典
        # 统计每个字符出现的次数
        for i in s:
            if not hash.get(i):
                hash[i] = 1
            else:
                hash[i] += 1
        
        oddli = []  # 存储出现奇数次的字符的列表
        evenli = []  # 存储出现偶数次的字符的列表
        
        # 将出现奇数次和偶数次的字符分别存储到对应的列表中
        for k, v in hash.items():
            if v % 2 == 0:
                evenli.append(v)
            else:
                oddli.append(v)
        
        oddlen = len(oddli)  # 计算出现奇数次的字符的个数
        
        # 如果没有出现奇数次的字符,则所有字符都可以用于构成回文串,直接返回字符串长度
        if oddlen == 0:
            for even in evenli:
                count += even
            return count
        # 如果只有一个出现奇数次的字符,则这个字符可以放在回文串的中间,其余字符都是偶数次出现,直接返回计算长度
        elif oddlen == 1:
            for even in evenli:
                count += even
            count += oddli[0]
            return count
        # 如果有多个出现奇数次的字符,则将其中偶数个字符的数量-1加入回文串,最后再加一个出现奇数次的字符作为中心
        else:
            for even in evenli:
                count += even
            for odd in oddli:
                count += odd - 1
            return count + 1
复制代码

 

posted @   Junior_bond  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示