leetcode-最长回文字串
题目描述
给你一个字符串 s,找到 s 中最长的回文子串。
输入输出
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
方法1:
动态规划
动态规划填表
- i<=j,故只需要填右三角
- 每一个值依赖其左下方
代码实现
def longestPalindrome(self, s: str) -> str: n = len(s) if n <2: return s max_sub_str = 1 begin = 0 dp = [[False]*n for _ in range(n)] # 对角线初始化为True for i in range(n): dp[i][i] = True # 按列填写 for j in range(1,n): for i in range(0,j): if s[i]!= s[j]: dp[i][j] = False else: # 边界条件 if j-i <3: dp[i][j] = True else: dp[i][j] = dp[i+1][j-1] len_sub_str = j - i + 1 # 记录最大回文子串 if dp[i][j] and len_sub_str > max_sub_str: max_sub_str = len_sub_str begin = i end = begin+max_sub_str return s[begin:end]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix