我是靠谱客的博主 幽默百褶裙,最近开发中收集的这篇文章主要介绍动态规划(最长回文子串),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给你一个字符串 s,找到 s 中最长的回文子串。

递推公式:dp[left][right]=s.charAt(left)==s.charAt(right)&&dp[left+1][right-1]

暴力枚举:

建立动态规划2维数组。从小到大判断字符串大小。

PS:需满足2个条件,一个是左右相同,第二是left+1,right-1是True。

class Solution:
    def longestPalindrome(self, s: str) -> str:
        L=len(s)
        if len==1:
            return s
        if len(s)==2:
            if s[0]==s[1]:
                return s
            else:
                return s[0]
        t=[[False for s in range(L) ] for _ in range(L)]
        for i in range(3):
            for n in range(L-i):
                if s[n]==s[n+i] :
                    t[n][n+i]=True
                    re = s[n:n + i + 1]
                    max=i
        for i in range(3,L):
            for n in range(L-i):
                if s[n]==s[n+i] and t[n+1][n+i-1]:
                    t[n][n+i]=True
                    re=s[n:n+i+1]
                    max=i
        return re

结果:使用pandas将数组变成Series,直观查看动态规划表

最后

以上就是幽默百褶裙为你收集整理的动态规划(最长回文子串)的全部内容,希望文章能够帮你解决动态规划(最长回文子串)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部