首页 > 编程语言 >代码随想录算法训练营Day54 ||leetCode 392.判断子序列 || 115.不同的子序列

代码随想录算法训练营Day54 ||leetCode 392.判断子序列 || 115.不同的子序列

时间:2024-03-24 23:03:16浏览次数:28  
标签:string int 随想录 ++ 序列 leetCode dp size

392.判断子序列 

双指针遍历,比较简单易懂

class Solution {
public:
    bool isSubsequence(string s, string t) {
        int a = 0, b = 0;
        while(a < s.size() && b < t.size()){
            if (s[a] == t[b]){
                a++;
            }
            b++;
        }
        return a == s.size();
    }
};

115.不同的子序列

这道题初始化与状态方程都不好想,建议多看解析

class Solution {
public:
    int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));
        for (int i = 0; i < s.size(); i++) dp[i][0] = 1;
        for (int j = 1; j < t.size(); j++) dp[0][j] = 0;
        for (int i = 1; i <= s.size(); i++) {
            for (int j = 1; j <= t.size(); j++) {
                if (s[i - 1] == t[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        return dp[s.size()][t.size()];
    }
};

标签:string,int,随想录,++,序列,leetCode,dp,size
From: https://blog.csdn.net/qq_44884699/article/details/136954441

相关文章

  • 代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离
    583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些初始化如下classSolution{public:intminDistance(stringword1,stringword2){vector<vector<int>>dp(word1.size()+1,vector<int>(word2.size()+1));for(inti=0;i......
  • 代码随想录算法训练营Day51 ||leetCode 309.最佳买卖股票时机含冷冻期 || 714.买卖股
    309.最佳买卖股票时机含冷冻期  需要新添加状态classSolution{public:intmaxProfit(vector<int>&prices){intn=prices.size();if(n==0)return0;vector<vector<int>>dp(n,vector<int>(4,0));dp[0][0]......
  • 代码随想录算法训练营Day52 ||leetCode 300.最长递增子序列 || 674. 最长连续递增序列
    300.最长递增子序列 classSolution{public:intlengthOfLIS(vector<int>&nums){if(nums.size()<=1)returnnums.size();vector<int>dp(nums.size(),1);intresult=0;for(inti=1;i<nums.size......
  • Java解决最长相邻不相等子序列I
    Java解决最长相邻不相等子序列I01题目给你一个下标从0开始的字符串数组words,和一个下标从0开始的二进制数组groups,两个数组长度都是n。你需要从words中选出最长子序列。如果对于序列中的任何两个连续串,二进制数组groups中它们的对应元素不同,则word......
  • leetcode113
    https://leetcode.cn/problems/path-sum-ii点击查看代码classSolution{publicList<List<Integer>>pathSum(TreeNoderoot,inttargetSum){List<List<Integer>>ans=newArrayList<>();List<Integer>pat......
  • LeetCode第390场周赛题解(c++)
    真的无语了,早上怎么都提交不了,显示未知错误。。。结果晚上就可以提交了。唉100245.每个字符最多出现两次的最长子字符串给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的 最大 长度。示例1:输入: s="bcbbbcba"输出: 4解释:以......
  • leetcode106从中序与后序遍历序列构造二叉树
    目录1.解题关键2.思路3.变量名缩写与英文单词对应关系4.算法思路图解5.代码本文针对原链接题解的比较晦涩的地方重新进行说明解释原题解链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/solutions/50561/tu-jie-gou-z......
  • 最长上升子序列
    一、题目描述B3637最长上升子序列二、问题简析2.1法一:\(O(N^2)\)令\(dp[i]=\)以\(a_i\)结尾的上升子序列的最大长度。以\(a_i\)结尾的上升子序列有两种可能:1、仅有\(a_i\)一个元素2、在满足\(j<i\)且\(a_j<a_i\)的以\(a_j\)结尾的上升子序列结尾,加上......
  • LeetCode刷题记录——day6
    1、https://leetcode.cn/problems/length-of-last-word/description/?envType=study-plan-v2&envId=top-interview-150直接从后往前遍历就好classSolution{public:intlengthOfLastWord(strings){intlength=0;intlen=s.length();for(int......
  • Java序列化之Jackson详解
    目录1Jackson1.1Jackson简介1.2为什么选择Jackson1.3Jackson的基本功能1.3.1将Java对象转换为JSON字符串(序列化)1.3.2将JSON字符串转换为Java对象(反序列化)1.4Jackson库主要方法1.5使用Jackson基本步骤1.5.1添加依赖(Maven或Gradle)1.5.2创建Java对象模型1.5.3使用ObjectMa......