首页 > 其他分享 >day46-dynamic programming-part13-8.17

day46-dynamic programming-part13-8.17

时间:2024-08-19 09:58:15浏览次数:6  
标签:return practice dynamic len range day46 8.17 dp 回文

tasks for today:

1. 647.回文子串

2. 516.最长回文子序列

--------------------------------------------------------------------

1. 647.回文子串

In this practice, it is important to figure out the essence to decide if a string a target one, the string [i,j] is based on [i+1,j-1] and if s[i] == s[j]. so dp[i][j] record if [i,j] is a target string, by juding if s[i] == s[j], result is updated (if applicable), and the dp[i][j] is decided.

class Solution:
    def countSubstrings(self, s: str) -> int:
        if len(s) == 1: return 1

        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]:
                    dp[i][j] = False
                else:
                    if j - i <= 1:
                        result += 1
                        dp[i][j] = True
                    elif dp[i+1][j-1]:
                        result += 1
                        dp[i][j] = True
            
        return result

2. 516.最长回文子序列

the difference of this practice from the practice 647 is that the sequence in this practice is not required as contunous.

the result should return dp[0][-1], which records the length of the logest target sequence.

class Solution:
    def longestPalindromeSubseq(self, s: str) -> int:
        if len(s) == 1: return 1

        dp = [[0] * len(s) for _ in range(len(s))]
        for i in range(len(s)):
            dp[i][i] = 1

        for i in range(len(s)-1, -1, -1):
            for j in range(i+1, len(s)):
                if s[i] == s[j]:
                    dp[i][j] = dp[i+1][j-1] + 2
                else:
                    dp[i][j] = max(dp[i][j-1], dp[i+1][j])
        
        return dp[0][-1]

标签:return,practice,dynamic,len,range,day46,8.17,dp,回文
From: https://blog.csdn.net/bbrruunnoo/article/details/141282905

相关文章

  • 2024.8.11至2024.8.17周总结
    本周学习任务清单1.字符串:Hash、KMP、trie树、拓展KMP(Z函数)、AC自动机、Manacher、回文自动机、后缀数组、后缀自动机、广义后缀自动机2.数论:欧拉函数、莫比乌斯函数、欧拉反演、莫比乌斯反演、筛法、杜教筛、min25筛3.博弈论:公平组合游戏、反常游戏、SG函数总结本周学习的......
  • 8.17日二分测试总结
    8.17日二分测试总结比赛传送门分数情况A.砍树B.买木头C.数列分段2D.吃冰棍E.跳石头F.奶牛晒衣服10080100\(_{没做:(}\)100总体分数\(_{很惨}\)T1.P1873[COCI2011/2012#5]EKO/砍树题目传送门问题分析运用二分答案与check函数check函数......
  • 2024.8.17
    DATE#:20240817ITEM#:DOCWEEK#:SATURDAYDAIL#:捌月拾肆TAGS <BGM="快哉风--黄金玉米王"><theme=oi-language><theme=oi-graphtheory><[空]><[空]>取次花丛懒回顾,半缘修道半缘君--元稹《离思五首·其四》[P4208[JSOI2008]最......
  • 2024.8.17 鲜花
    コネクト交(か)わした约束(やくそく)忘(わす)れないよ『无法忘却彼此结下的约定』kawashitayakusokuwasurenaiyo目(め)を闭(と)じ确(たし)かめる『轻闭双眼再次确认』mewotojitashikameru押(お)し寄(よ)せた闇(やみ)振(ふ)り払(はら)って进(すす)むよ『驱......
  • [考试记录] 2024.8.17 csp-s模拟赛21
    T1Set解析思考+组合题场上只能想到暴力01背包再加上bitset优化,很好打。本应该有60pts(?或者更多),不曾想由于spj的一些未知原因喜提systemerror,全部cancelled。喜提0pts。......
  • dp题单vjudge 8.17
    HDU-1024MaxSumPlusPlushttps://acm.hdu.edu.cn/showproblem.php?pid=1024可以想到用dp过,但是无论时间和空间都不够,然后就不会了https://www.cnblogs.com/wuwangchuxin0924/p/6546901.html先写出转移方程,然后发现如果把其中一部分用其他的东西储存起来,就不需要重复寻找,直......
  • 8.17周总结
    本周学习的东西比较少,因为也要准备开学考试,本周将老师所留的PTA程序设计实验进行了结尾,并对CSS代码中的三个重要方面进行了学习,常规流,浮动。对于常规流,就是属于我们平常所写的一些代码,在这里我们了解了盒子的包含块,等于其父元素的内容盒;我学习了块盒,对于在块盒中,我知道了每个块盒......
  • 8.17
    ok 先来说一下近期变化  变胖了一点点 吃的太好了 and买了平板电脑今天刚到  然后今天闯了个红灯感觉非常不好spark环境搭建失败失败......................fuck尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop,Spark主要用于替......
  • 8.17日周记
    一、C语言学习1.pow函数用法:pow(底数,指数)例子:pow(x,2)=x²2.abs函数用法:abs(n)取n的绝对值3.strstr函数:搜索字符串1是否在字符串2中出现,若未搜索到,则返回NULL;若搜索到,则该函数返回第一次出现s2的地址。4.strcpy函数:用法:strcpy(字符串1,字符串2);strcpy函数将字符......
  • SOMEIP_ETS_042: echoUTF16DYNAMIC_length_too_short_for_String
    测试目的:验证设备(DUT)能否正确拒绝一个长度小于实际字符串长度的echoUTF16DYNAMIC字符串。描述本测试用例旨在检查当发送的SOME/IP消息中的echoUTF16DYNAMIC字符串长度小于实际字符串长度时,DUT是否能够返回格式错误(MALFORMED_MESSAGE)的错误消息。测试拓扑:具体步骤:TEST......