【lc】409最长回文串
链接
https://leetcode.cn/problems/longest-palindrome/description/
分析
这题其实就是想让我们组成回文串。
回文串的特点:
1. 如果回文串长度为奇数,那么只有1个字符是奇数个,其余全是偶数个。
2. 如果回文串长度为偶数,那么全部字符都为偶数个。
所以,我们的问题转化成了,怎么从一堆字符里找到符合1,2条件的。
我们可以先找到全部的偶数字符,相加,然后再找到所有的奇数字符,把每个奇数字符的数量减去1(就变成了偶数)。
然后我们判断一下有没有经过奇数操作,没有经过的话,证明是情况2.如果经过了话,我们还要+1恢复其中1个奇数。
代码:
class Solution: def longestPalindrome(self, s: str) -> int: """ 先把个数读到dict里 然后对偶数进行加和,同时对奇数-1进行加和 奇数初始化为0(防止没有奇数的情况) :param s: :return: """ mem = dict() res = 0 flag = False for i in s: if i in mem: mem[i] += 1 else: mem[i] = 1 for k, v in mem.items(): if v & 1 == 0: res += v else: res += v-1 flag = True return res+1 if flag else res
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具