首页 > 其他分享 >Leetcode刷题-动态规划-最长回文子串

Leetcode刷题-动态规划-最长回文子串

时间:2024-03-15 23:57:12浏览次数:26  
标签:lens re range 字符串 刷题 Leetcode dp 回文

链接:5. 最长回文子串 - 力扣(LeetCode)

给你一个字符串 s,找到 s 中最长的回文子串,如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成

1:确定dp数组。dp[i][j]:s[i:j+1]是否为回文串

2:推导公式。s[i]=s[j]→i和j相邻,s[i:j+1]表示一个字符或者两个字符(a,aa);i和j不想临,只有dp[i+1][j-1](i和j之间的)是回文,dp[i][j]才是回文

力口647进阶

class Solution:
    def longestPalindrome(self, s: str) -> str:
        lens=len(s)
        dp=[[False for i in range(lens)]for j in range(lens)]
        re=[-1,'']
        for i in range(lens-1,-1,-1):
            for j in range(i,lens):
                if(s[i]==s[j]):
                    if(j-i<=1):
                        dp[i][j]=True
                        if(j+1-i>re[0]):
                            re[0],re[1]=j+1-i,s[i:j+1]
                    elif(dp[i+1][j-1]):
                        dp[i][j]=True
                        if(j+1-i>re[0]):
                            re[0],re[1]=j+1-i,s[i:j+1]
        return re[1]

 

标签:lens,re,range,字符串,刷题,Leetcode,dp,回文
From: https://www.cnblogs.com/xiaoruru/p/18076509

相关文章

  • 125. 验证回文串c
    回文串置逆,栈,双指针。booljudge(charc){if(c>='a'&&c<='z')returntrue;if(c>='A'&&c<='Z')returntrue;if(c>='0'&&c<='9')returntrue;return......
  • 234. 回文链表c
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*pre;booljudge(structListNode*head){if(!head)returntrue;booltemp=judge(head->next);if(!temp)r......
  • 【LeetCode 1466】重新规划路线
    题目描述原题链接:LeetCode.1466重新规划路线解题思路路线网形成一棵树,说明每个节点都参与两条路线,或作为起点或作为终点;要想所有城市都可以通往城市0,必须要把所有逆向的路线都变更一次方向,逆向路线总数量即为答案;朴素BFS版本从城市0出发,遍历每个从已通城市出发的......
  • 2024-03-15 leetcode写题记录
    目录2024-03-15leetcode写题记录32.最长有效括号题目链接题意解法42.接雨水题目链接题意解法动态规划双指针2024-03-15leetcode写题记录32.最长有效括号题目链接32.最长有效括号题意给你一个只包含$'\((\)'和'\()\)'的字符串,找出最长有效(格式正确且连续)括号子串的......
  • 【leetcode】二叉树的前序遍历➕中序遍历➕后序遍历
    大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞......
  • 力扣刷题Days19-637.二叉树的层平均数
    目录1,题目2,代码2.1广度优先遍历2.2深度优先遍历3,学习与总结1,题目给定一个非空二叉树的根节点 root ,以数组的形式返回每一层节点的平均值。2,代码2.1广度优先遍历/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*......
  • 力扣刷题Days16 - 191.位1的个数(js)
    目录1,题目2,代码2.1逐位判断核心代码2.1.2逐位判断22.2位运算优化3,学习与总结1,题目编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为'1'的个数(也被称为汉明重量)。2,代码2.1逐位判断/***@param{number}n-apositivein......
  • 2024-03-14 leetcode写题记录
    目录2024-03-14leetcode写题记录829.连续整数求和题目链接题意解法2024-03-14leetcode写题记录829.连续整数求和题目链接829.连续整数求和题意给定一个正整数\(n\),返回连续正整数满足所有数字之和为\(n\)的组数。示例1:输入:n=5输出:2解释:5=2+3,共有两......
  • 【小白刷leetcode】第15题
    【小白刷leetcode】第15题动手刷leetcode,正在准备蓝桥,但是本人算法能力一直是硬伤。。。所以做得一直很痛苦。但是不熟练的事情像练吉他一样,就需要慢速,多练。题目描述看这个题目,说实在看的不是很懂。索性我们直接来看输入输出。观察输入输出我们可以知道:输入是一个数......
  • 【LeetCode 2312】卖木头块
    题目描述原题链接:2312卖木头块解题思路每次切割只能完全横切或者竖切,即切成更矮或者更窄的木块;每次切割后剩余的两部分木块都是更小规模的同类问题,典型的可以用动态规划求解的问题;具体到单个问题,高x宽y的木块能卖的最多钱数有三种情况:prices数组中正好有对应宽高的价格......