Leedcode每日打卡 4.12

简介: Leedcode每日打卡 4.12

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


示例 1:


输入:s = "babad"

输出:"bab"

解释:"aba" 同样是符合题意的答案。

示例 2:


输入:s = "cbbd"

输出:"bb"


提示:


1 <= s.length <= 1000

s 仅由数字和英文字母组成


来源:力扣(LeetCode)


动态规划


思路:定义dp[i][j]为以字符串第i个字符开头到第j个字符结尾的字符串是否为回文串


(i<=j)


子串s[l,r],如果s[l+1:r-1]是回文串,那么只需要看s[l]和s[r]是否相等


即dp[l][r]=dp[l+1][r-1] and s[l]==s[r]


特殊情况,如果l+1与r-1相等,说明两个端点中间只有一个元素,


dp[l][r]=True if s[l]==s[r] else False,实际上也可以并入上面那一种情况,因为一个元素自成回文串


如果l+1>r-1,说明两个端点之间没有元素了,那么只需要直接判断s[i]和s[r]是否相等.


在上面的解释过程中,我们都是强调两个端点,但因为i<=j,当i=j时候两点重合,直接赋值即可


总结:定义方程含义,找出状态转移方程,根据状态转移方程确定边界条件。

class Solution:
    def longestPalindrome(self, s: str) -> str:
        n=len(s)
        dp=[[False]*n for i in range(n)]
        dp[n-1][n-1]=True
        a,b,ans=0,0,0
        for l in range(n-2,-1,-1):
            for r in range(l,n):
                if l==r:
                    dp[l][r]=True
                elif l+1>r-1:
                    dp[l][r]=True if s[l]==s[r] else False
                else:
                    dp[l][r]=dp[l+1][r-1] and s[r]==s[l]
                if dp[l][r] and r-l>=ans:
                    a,b,ans=l,r,abs(l-r)
        return s[a:b+1]

eddc66277b554719b3a58d8605ccc4b2.png

我是小郑 正在奔赴热爱 奔赴山海!

相关文章
|
4月前
NYOJ-757-期末考试
NYOJ-757-期末考试
22 0
|
存储 算法 Java
【AcWing每日一题】4818. 奶牛大学
【AcWing每日一题】4818. 奶牛大学
107 0
三道华为机试题
三道华为机试题
57 0
|
存储
【leedcode】0002. 链数之和
【leedcode】0002. 链数之和
52 0
【leedcode】0005. 最长回文子串
【leedcode】0005. 最长回文子串
40 0
AcWing第 96 场周赛
AcWing第 96 场周赛
176 0
|
机器学习/深度学习 编译器
【AcWing周赛】AcWing第85场周赛
目录 &lt;一&gt;Acwing 4791. 死或生 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;二&gt;Acwing 4792. 最大价值 一、题目 1、原题链接 2、题目描述 二、解题报告: 1、思路分析 2、时间复杂度 3、代码详解 &lt;三&gt;Acwing 4793. 危险程度 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;四&gt; 知识风暴 1、排序不等式 2、贪心法 3、数据范围 4、并查集 基本操作
78 0
|
机器学习/深度学习 人工智能 安全
【AcWing周赛】AcWing第86场周赛
目录 <一>AcWing 4794. 健身 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <二>AcWing 4795. 安全区域 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <三>AcWing 4796. 删除序列 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
73 0
|
算法 Java
acwing 第63场周赛【2022.08.06】
acwing 第63场周赛【2022.08.06】
74 0
acwing 第63场周赛【2022.08.06】