力扣 5. 最长回文子串 python AC

动态规划

python 复制代码
class Solution:
    def longestPalindrome(self, s):
        size = len(s)
        maxl = 1
        start = 0
        dp = [[False] * size for _ in range(size)]
        for i in range(size):
            dp[i][i] = True
        for L in range(2, size + 1):
            for i in range(size):
                j = L + i - 1
                if j >= size:
                    break
                if s[i] == s[j]:
                    if L >= 4:
                        dp[i][j] = dp[i + 1][j - 1]
                    else:
                        dp[i][j] = True
                if dp[i][j] and maxl < L:
                    maxl = L
                    start = i
        return s[start:start + maxl]

这里将dp数组含义设为当前位置是否是回文子串

--创建二维dpij,表示从索引i到索引j位置的子串是否是回文子串(初始值为False)

--将每个单个字符设置为True(长度为1的子串一定是回文子串)

--从2到size遍历L(代表子串长度)(从长度为2开始,因为长度为1的上一步已经标为了True)

--从0到size-1遍历i(代表子串起点)

--通过子串长度L和子串起点i求出子串终点(索引为L + i - 1)

--如果终点超过了整个字符串则退出

--如果i位置字符和j位置字符相同

--如果长度大于等于4

--dpij是否是回文子串 = dpi+1j-1是否是回文子串

--否则(长度小于4,即没有更小的区间来推断)

--dpij = True

--判断长度是否比记录过的最大长度最大

--是的话更新最大长度,并记录此时的起点i

--返回字符串s从start到start+最大长度的子串

相关推荐
用户019027581612 小时前
Dify / Coze 低代码 Agent 怎么接 A 股行情?
python
Dumbness2 小时前
不传 day 参数,座位图显示全空:用 Python 标准库手写 Web 框架,请求到业务代码前的 5 个细节
后端·python
通信小呆呆3 小时前
电子战抗干扰技术:当“不被干扰”成为一种系统
算法·通信·mimo·isac
笑容掩饰我的失落3 小时前
区块链从小白到精通(八):从零实现一个标准 ERC-20 代币(完整可运行代码)
算法·区块链·php·智能合约·哈希算法
databook3 小时前
收上来一堆 Excel,怎么保证没改错
python·数据分析
Severus_black3 小时前
【C++初阶】Stack、Queue算法题大练兵!
c语言·c++·算法·stl
2601_967987374 小时前
Python 教程:默认字典(defaultdict)全维度深度指南
python·性能优化·数据处理·collections·defaultdict
鱼听禅4 小时前
Ubuntu安装YOLOv8进行菌落识别训练
linux·python·yolo·ubuntu
ZhengEnCi4 小时前
Agent 查不出代码 Bug 怎么办:一份带时间戳的调试日志与读日志排查流程
python·ai编程
威哥爱编程5 小时前
模拟面试智能体开发实战 05:给面试官接上题库和检索,题目结构化、大纲可溯源,AI 不再凭印象出题
python·agent·harmonyos