首页 > 其他分享 >516. 最长回文子序列

516. 最长回文子序列

时间:2023-06-07 16:01:01浏览次数:42  
标签:int len 序列 516 最长 dp 回文

给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。

子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。


示例 1:

输入:s = "bbbab"
输出:4
解释:一个可能的最长回文子序列为 "bbbb" 。

> 动态规划


class Solution {
public:
    int longestPalindromeSubseq(string s) {
        int len = s.size();
        vector<vector<int>> dp(len, vector<int>(len, 0));

        for (int i = len - 1; i >= 0; i--) {
            for (int j = i; j < len; j++) {
                if (i == j) {
                    dp[i][j] = 1;
                    continue;
                }
                if (s[i] == s[j]) {
                    dp[i][j] = dp[i + 1][j - 1] + 2;
                }
                else {
                    dp[i][j] = std::max(dp[i][j - 1],dp[i + 1][j]);
                }
                //cout << i << j << dp[i][j] << endl;
            }
        }
        return dp[0][len - 1];
    }
};

标签:int,len,序列,516,最长,dp,回文
From: https://www.cnblogs.com/lihaoxiang/p/17463548.html

相关文章

  • Qt使用wmic获取硬件序列号
    一、1.命令框输入wmic 二、#include"hardware_info.h"#include<QProcess>#include<QDebug>hardware_info::hardware_info(){}QStringhardware_info::get_cpu_id(){QStringListarg;arg<<"cpu"<<"ge......
  • 647. 回文子串
    给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。输入:s="abc"输出:3解释:三......
  • LeetCode 9.回文数
    LeetCode9.回文数思路分两种情况。如果值为负数,则当前数肯定不是回文数如果值为正数,则将其数值反转后与原数值比较,如果相同则是回文数代码classSolution{publicbooleanisPalindrome(intx){if(x<0)returnfalse;inttmp=0,num=x;while(num......
  • C# 中的序列化
    1/*****************序列化与反序列化***************23*1.把对象转换为字节序列的过程称为对象的序列化。4*2.把字节序列恢复为对象的过程称为对象的反序列化。5*3.最简单的方法是使用Serializable属性对类进行标记6*4.IFormatter提供序列化的接口7......
  • linux中实现提取碱基序列的互补序列
     001、[root@PC1test03]#lsa.fa[root@PC1test03]#cata.fa##测试序列ATCGATGC[root@PC1test03]#cata.fa|tr"ATCG""TAGC"##提取碱基序列的互补序列TAGCTACG ......
  • 2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位
    2023-06-06:给你二叉树的根结点root,请你设计算法计算二叉树的垂序遍历序列。对位于(row,col)的每个结点而言,其左右子结点分别位于(row+1,col-1)和(row+1,col+1)树的根结点位于(0,0)。二叉树的垂序遍历从最左边的列开始直到最右边的列结束,按列索引每一列上......
  • 2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位
    2023-06-06:给你二叉树的根结点root,请你设计算法计算二叉树的垂序遍历序列。对位于(row,col)的每个结点而言,其左右子结点分别位于(row+1,col-1)和(row+1,col+1)树的根结点位于(0,0)。二叉树的垂序遍历从最左边的列开始直到最右边的列结束,按列索引每一......
  • 115. 不同的子序列
    给你两个字符串s和t,统计并返回在s的子序列中t出现的个数。题目数据保证答案符合32位带符号整数范围。示例1:输入:s="rabbbit",t="rabbit"输出:3解释:如下所示,有3种可以从s中得到"rabbit"的方案。rabbbitrabbbitrabbbit>动态规划首先dp[i][j]......
  • 392. 判断子序列
    给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的S,称作S1,S2,...,Sk其中k>=10亿,你需要依次检查它......
  • 克隆和序列化应用(附面试题)
    克隆在开始学习克隆之前,我们先来看看下面的代码,普通的对象复制,存在什么问题?classCloneTest{publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{//等号赋值(基本类型)intnumber=6;intnumber2=number;//......