# # 动态规划再显神通,LeetCode:516.最长回文子序列长度 # # 给你一个字符串s ,找出其中最长的回文子序列,并返回该序列的长度。 # # 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 # # # 示例1: # 输入:s = "bbbab" # 输出:4 # 解释:一个可能的最长回文子序列为 # "bbbb" 。 # # 示例2: # 输入:s = "cbbd" # 输出:2 # 解释:一个可能的最长回文子序列为"bb" 。 s = "bbbab" # def get_len(s): 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 # s[i:j+1]最长回文长度 else: dp[i][j] = max(dp[i+1][j], dp[i][j-1]) print(dp) return dp[0][-1] print(get_len(s))
42.最长回文子序列长度-难点
最新推荐文章于 2024-10-01 18:52:56 发布
本文介绍如何使用动态规划算法解决LeetCode中的问题,即找到给定字符串s中最长的回文子序列的长度,通过构建动态规划表格dp来实现计算过程。
摘要由CSDN通过智能技术生成