zoukankan      html  css  js  c++  java
  • 每日一题力扣409

    给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

    在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

    就是出现双数数量的字符肯定能够组成回文的部分。就存下来这些数量;然后对于奇数个的要其中最大的偶数个。再留下一个原奇数个的字符,真是太神奇了。

    class Solution:
        def longestPalindrome(self, s: str) -> int:
            l_s = list(s)
            #字典来存储每个字母出现的个数
            m = {}
            for word in l_s:
                m[word]= m.get(word,0)+1#如果有这个的话,就加一,没有的话就新增key再赋值为0
            
            result = 0
            for key, value in m.items():
                #如果出现个数为偶数,直接加入.偶数肯定可以做回文
                if value % 2 == 0:
                    result += value
                else:
                    #如果为奇数,则加value - 1,并且,该字母的次数变为1
                    result += value - 1#,变成偶数加入回文串
                    m[key] = 1 #关键行,处理例如:"aaabb"-转化为->"ababa"
            #如果遍历完成的字符串中还有,出现值为1的字母,那么结果长度还要加1才行,因为可以把这个单个字母放在中间,使长度再增加1
            return  result + 1 if 1 in m.values() else result
  • 相关阅读:
    js分页的一些思考
    是时候写个自己的dialog了
    自定义幻灯片
    触屏开发技巧之——左右滑动导航
    影响网页响应的一个小习惯
    一个简单WebApp的全程
    选项卡(一个最常见的网页组件)
    REGEX
    map<虽然一直不喜欢map>但突然觉得挺好用的
    迭代器
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14606930.html
Copyright © 2011-2022 走看看