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

这题首先统计字符串中每个字符出现次数k,如果为偶数,则可以使用全部k个;如果为奇数。则使用k-1个。然而,注意,整个回文字符串正中间可以有一个独立字符。
完整代码:
class Solution:
def longestPalindrome(self, s: str) -> int:
dic = {}
for c in s:
dic[c] = dic.get(c, 0) + 1
ans = 0
for v in dic.values():
ans += v//2*2
if v%2 == 1 and ans%2 == 0:
ans += 1
return ans
运行结果:
