给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
输入:“abccccdd” , “ccc”, “cc”
输出:7 , 3 ,2
解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
import collections
def longestPalindrome(s):
dic=collections.Counter(s)
length=0
maximum=0
for i in dic.values():
if i%2==0:
length+=i
else:
length+=i-1
maximum=1
return length+maximum
本来自己也写了,但是 "ccc"的情况想了好长时间没有解决,最后还是看了别人的答案。
collections模块中常用的函数
参考容器数据类型——collections
Counter() 用于统计一个容器中各个元素的个数
Counter对象中常用的方法有:
most_common(n) 返回重复次数最多的n个值
a.update(b) 把b中的对象添加到a中
a.subtract(b) 从a中把b中的对象删除(删除完以后可以为负数)