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

思路:先统计每个字符出现得次数,如果是偶数个就累加,奇数个得话就减一个加进去。由于回文中可以有一个奇数个字母,所以需要再加个1.
做一个flag是否有出现奇数个,有得话返回加一。没有得话直接返回偶数个数就行。

class Solution:    def longestPalindrome(self, s: str) -> int:        dic=collections.Counter(s)        num=0        tag=0               for value in dic.values():            # if len(dic)==1: return value            if value%2==0:                num=num+value            else:                num=num+value-1                tag=1        if tag==0:return num        else:return num+1                        

class Solution: def longestPalindrome(self, s: str) -> int: dic=collections.Counter(s)
num=0
tag=0
for value in dic.values():
if value%20: num=num+value
else:
num=num+value-1 tag=1
if tag
0:return num else:return num+1

在这里插入代码片
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值