题目
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意
假设字符串的长度不会超过 1010。
示例
示例 1:
输入:
“abccccdd”
输出:
7
解释
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
Python实现
思路 先统计所给字符串中各个字符出现的频次,若出现偶数次的总数即为构成最长回文数长度,若有奇数字符(不论几个)则在最后长度加1。
示例:“abccccdd”统计后结果为{‘a’:1,‘b’:1,‘c’:4,‘d’:2},遍历a\b\c\d的字典值,统计每个值除以2得到的除数,其中若出现奇数且结果不为奇数另外在结果加一。
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: int
"""
result = 0
for i in collections.Counter(s).values():
result += i//2*2
if i%2==1 and result%2==0:
result +=1
return result
【甜点来袭1】python中‘//’、‘/’、‘%’的用法
4 / 2 = 2.0
4 // 2 = 2
4 % 2 = 0