给定一个包含大写字母和小写字母的字符串 s
,返回 通过这些字母构造成的 最长的
回文串的长度。
在构造过程中,请注意 区分大小写 。比如 "Aa"
不能当做一个
回文字符串
此题为贪心算法的题目,但是用哈希表也可以完成
回文串」是指倒序后和自身完全相同的字符串,即具有关于中心轴对称的性质。观察发现,
当回文串长度为偶数时,则所有字符都出现了偶数次;
当回文串长度为奇数时,则位于中心的字符出现了奇数次,其余所有字符出现偶数次;
class Solution:
def longestPalindrome(self, s: str) -> int:
counter=collections.defaultdict(int)
for c in s:
counter[c]+=1
res,odd=0,0
for count in counter.values():
rem=count%2
res+=count-rem
if rem==1:
odd=1
return res+odd