代码随想录算法训练营第四十七天|leetcode115、392题

一、leetcode第392题

本题要求判断s是否为t的子序列,因此设置dp数组,dp[i][j]的含义是下标为i-1的子串与下标为j-1的子串相同字符的个数,可得递推公式是通过s[i-1]和t[j-1]是否相等区分。

具体代码如下:

cpp 复制代码
class Solution {
public:
    bool isSubsequence(string s, string t) {
    vector<vector<int>>dp(s.length()+1,vector<int>(t.length()+1,0));
    for(int i=1;i<=s.length();i++)
    {
        for(int j=1;j<=t.length();j++)
        {
            if(s[i-1]==t[j-1])
            {
                dp[i][j]=dp[i-1][j-1]+1;
            }
            else
            {
                dp[i][j]=dp[i][j-1];
            }
        }
    }
    if(dp[s.length()][t.length()]==s.length())
    {
        return true;
    }
    return false;
    }
};

二、leetcode第115题

本题要求s的子串与t相等的个数,因此设置dp数组,其中dp[i][j]的含义是i-1为下标的子串中包含j-1为下标的子串的个数,根据s[i-1]和t[j-1]是否相等来写递推公式,相等时递推公式dp[i][j]由dp[i-1][j-1](考虑s[i-1])和dp[i-1][j](不考虑s[i-1])构成,不相等时则等于不考虑s[i-1]时的递推式。

具体代码如下:

cpp 复制代码
class Solution {
public:
    int numDistinct(string s, string t) {
    vector<vector<uint64_t>>dp(s.length()+1,vector<uint64_t>(t.length()+1));
    for(int i=0;i<=s.length();i++)
    {
        dp[i][0]=1;
    }
    for(int j=1;j<=t.length();j++)
    {
        dp[0][j]=0;
    }
    for(int i=1;i<=s.length();i++)
    {
        for(int j=1;j<=t.length();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.length()][t.length()];
    }
};
相关推荐
YuTaoShao3 分钟前
【LeetCode 每日一题】3634. 使数组平衡的最少移除数目——(解法一)排序+滑动窗口
算法·leetcode·排序算法
波波00711 分钟前
每日一题:.NET 的 GC是如何分代工作的?
算法·.net·gc
风暴之零20 分钟前
变点检测算法PELT
算法
深鱼~20 分钟前
视觉算法性能翻倍:ops-cv经典算子的昇腾适配指南
算法·cann
李斯啦果21 分钟前
【PTA】L1-019 谁先倒
数据结构·算法
梵刹古音27 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
啊阿狸不会拉杆44 分钟前
《机器学习导论》第 5 章-多元方法
人工智能·python·算法·机器学习·numpy·matplotlib·多元方法
R1nG8631 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
_OP_CHEN2 小时前
【算法基础篇】(五十六)容斥原理指南:从集合计数到算法实战,解决组合数学的 “重叠难题”!
算法·蓝桥杯·c/c++·组合数学·容斥原理·算法竞赛·acm/icpc
TracyCoder1232 小时前
LeetCode Hot100(27/100)——94. 二叉树的中序遍历
算法·leetcode