力扣 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+最大长度的子串

相关推荐
叠层归一研究院1 分钟前
如何用程序搭建一个 AGI 种子系统(三):生长如何对接物理与数学宇宙
人工智能·python·算法·机器学习·transformer·agi
jufeng130712 分钟前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 5 篇】
python·ai agent·上下文压缩
AndrewHZ13 分钟前
图像处理入门008 | 阶段总结:环境测试与基础概念测验
图像处理·python·opencv·计算机视觉·cv
show43321 分钟前
2026小程序端AI智能优化技术实践:转文字后自动纠错+润色+分段算法分析
人工智能·算法·小程序
北斗落凡尘22 分钟前
LangGraph 入门实战(10)--时光回溯
python·langchain
今天AI了吗22 分钟前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust
张张123y37 分钟前
Hermes Agent 是什么?它能做什么,以及如何部署到飞书
人工智能·python·飞书
SamChan9044 分钟前
用Playwright端到端测试PDF翻译功能:Web自动化测试实战
前端·python·ai·pdf·wpf
平生不晚1 小时前
在 SVG 体系里画一条任意的线
前端·算法
袁袁袁袁满1 小时前
Python爬虫实战:利用巨量IP获取跨境电商数据
爬虫·python·网络爬虫·爬虫实战·跨境电商·电商爬虫