class Solution:
def longestPalindrome(self, s: str) -> int:
dic = defaultdict(int)
for char in s:
dic[char]+=1
res = 0
tmp = 0
for k,v in dic.items():
if v%2==0:
res+=v
else:
res+=(v-1)
if res==len(s):
return res
else:
return res+1
题目分析
- 回文串非常简单了,就是对称。回文串的长度要么是偶数,要么是奇数。
- 最长的回文子串,我们希望字符都是出现偶数,这样能达到最长的目的
- 如果字符的出现次数是偶数直接给最终结果相加
- 如果字符的出现次数是奇数,那么减去1相加
- 最终判断最长的回文串的长度,如果是和原字符串的长度一致,那么不做改变;如果比原字符串长度小的话,那么就加1即可