一开始的思路是:偶数出现次数全部加进去,然后奇数最长的先加进去,剩下的都减一再加:
class Solution:
def longestPalindrome(self, s: str) -> int:
d = dict() ## 字典存储
c = []
le = 0
flag = 0
for i in range(len(s)): ## 将每个字母出现的次数统计进字典
if(s[i] in d):
d[s[i]] = d[s[i]]+1
else:
d[s[i]] = 1
for i in d: ## 只把次数读入数组c
c.append(d[i])
for i in range(len(c)): ## 冒泡排序(逆序)
for j in range(0, len(c)-i-1):
if (c[j] < c[j+1]):
c[j], c[j+1] = c[j+1], c[j]
for i in range(len(c)):
if(c[i]%2 == 0): ## 当c[i]为偶数,直接加进去
le = le+c[i]
elif(flag==1): ## 最大奇数已经使用过了,后面的奇数都需要减一
le = le+c[i]-1
else: ##c[i]为奇数,且为第一个最长的奇数,直接加
le = le+c[i]
flag = 1
return le
执行通过:
我的代码好长啊。。。让我想想能不能优化一下