算法day57|647,516
创始人
2024-04-29 20:41:00
0

目录

647. 回文子串

516.最长回文子序列

动态规划总结篇


647. 回文子串

dp数组的定义

dp[i][j]代表的是区间[i,j]的字串是否为回文字符,如果dp[i][j]为true,否则为false

递推公式

如果s[i]和s[j]相等的话

1.i==j

为同一个字符,dp[i][j] = True

2 i与j相差1

dp[i][j] = True

3.i与j相差大于1

看一下前面的区间是不是true

dp[i-1][j-1] == True

如果不相等,那么return false

初始化

dp[i][j]== False

遍历顺序

因为需要在相等的第三种情况,需要判断里面的区间是不是回文。但是如果从上往下,从左往右遍历的话,会直接使用dp[i+1][j-1]未初始化的情况。所以我们不能那么遍历,所以我们需要从下往上,从左往右遍历

 

class Solution:def countSubstrings(self, s: str) -> int:#dp数组的定义,dp[i][j]dp = [[False] * len(s) for _ in range(len(s))]#初始化result = 0#遍历顺序,从下往上,从左往右for i in range(len(s)-1,-1,-1):for j in range(i,len(s)):#如果相等if s[i] == s[j]:#i==jif i == j:result += 1dp[i][j] = Trueelif j-i == 1:result += 1dp[i][j] = Trueelse:if dp[i+1][j-1]:result += 1dp[i][j] = Truereturn result

代码随想录

516.最长回文子序列

dp数组的定义

dp[i][j]指的是字符串在[i,j]范围内最长回文子序列的长度是dp[i][j]

递归公式

如果s[i]和s[j]相同:

就要把长度+2,因为加入新的两个数

dp[i][j] = dp[i-1][j-1]+2

如果不相同:

那么把s[i]放进去

dp[i][j]= dp[i][j-1]

把s[j]放进去

dp[i][j]=  dp[i-1][j]

初始化

如果i==j的话,一定是等于1的

遍历顺序

从下到上,从左到右

打印dp

最后返回就看i,j区间内,最长的长度

647. 回文子串,求的是回文子串,而本题要求的是回文子序列, 大家要搞清楚两者之间的区别。

代码随想录

class Solution:def longestPalindromeSubseq(self, s: str) -> int:#dp数组的定义dp = [[0]*len(s) for _ in range(len(s))]for i in range(len(s)):dp[i][i] = 1for i in range(len(s)-1,-1,-1):for j in range(i+1,len(s)):#如果s[i]==s[j]的话if s[i]==s[j]:dp[i][j] = dp[i+1][j-1]+2else:dp[i][j] = max(dp[i+1][j],dp[i][j-1])return dp[0][-1]

动态规划总结篇

代码随想录

相关内容

热门资讯

安卓linux系统软件,功能与... 你知道吗?在智能手机的世界里,有一个系统可是独树一帜,那就是安卓Linux系统。它就像一位多才多艺的...
安卓ios双系统接单,拓展业务... 你知道吗?现在这个时代,手机双系统已经成为了很多人的选择。安卓和iOS,这两个操作系统就像是一对双胞...
安卓系统和linux系统的区别... 你有没有想过,为什么你的手机里装的是安卓系统而不是Linux系统呢?这两者虽然听起来都挺高大上的,但...
小米4安卓系统几代,引领科技潮... 你有没有想过,你的手机里那个小小的操作系统,其实就像是一个默默无闻的超级英雄呢?今天,咱们就来聊聊小...
安卓系统里的SE,功能与操作指... 你有没有发现,安卓系统里有个叫SE的小家伙?别小看了它,这个小家伙可是隐藏着不少秘密呢!今天,就让我...
手机系统flyme是安卓系统吗... 你有没有想过,你的手机里那个飞快如风的系统,Flyme,它是不是安卓的“好兄弟”呢?今天,就让我带你...
安卓os系统怎么使用,Andr... 你手里那台安卓手机是不是总感觉有点儿复杂,不知道怎么玩转呢?别急,今天就来给你详细介绍一下安卓OS系...
安卓怎么装旧系统,安卓设备如何... 你有没有想过,手机用久了,系统更新换代,新功能层出不穷,但有时候,那些旧系统里的经典操作和熟悉感,简...
电脑怎装安卓系统,轻松实现多系... 你有没有想过,你的电脑除了装Windows系统,还能装上安卓系统呢?没错,就是那个让你手机不离手的安...
安卓系统找不到软件,探寻解决方... 最近是不是你也遇到了这样的烦恼:手机里明明有安卓系统,却怎么也找不到心仪的软件?别急,今天就来给你详...
小米独立系统取代安卓,迈向自主... 小米独立系统:小米与安卓的较量在科技领域,每一次系统的更新换代都牵动着无数科技爱好者和行业从业者的目...
安卓系统会员价格,性价比与权益... 你有没有发现,最近手机上的安卓系统会员价格又涨了?这可真是让人有点头疼呢!咱们一起来聊聊这个话题,看...
安卓点歌系统怎么点歌,享受音乐... 你有没有想过,在安卓手机上点歌竟然也能这么有趣呢?没错,现在就让我带你一起探索安卓点歌系统的奥秘吧!...
w222安卓系统,功能解析与使... 你有没有发现,最近你的手机是不是变得越来越流畅了?没错,我要说的就是那款备受瞩目的W222安卓系统!...
iphone手机使用安卓系统,... 你有没有想过,如果有一天你的iPhone手机突然变成了安卓系统,会是怎样的场景呢?想象那熟悉的苹果界...
安卓系统珠宝手绘软件,艺术与科... 你有没有想过,手机上那些精美的珠宝手绘作品是怎么诞生的呢?其实,这一切都离不开安卓系统上一款神奇的应...
安卓系统app签名方案,安全与... 你有没有想过,为什么你的手机上那么多应用都能无缝运行?这其中,安卓系统app签名方案可是功不可没哦!...
安卓系统关闭应用存储,释放手机... 手机里的应用越来越多,存储空间越来越紧张,是不是感觉手机像是个装满杂物的仓库?别急,今天就来教你怎么...
安卓系统的占比,引领移动设备市... 你知道吗?在智能手机的世界里,有一个系统可是占据了半壁江山,那就是安卓系统!想象你手中的手机,是不是...
在线安卓翻译系统实现,便捷跨语... 你有没有想过,在这个信息爆炸的时代,语言不再是沟通的障碍?没错,我要说的是,在线安卓翻译系统正在悄悄...