美文网首页
不同的子序列

不同的子序列

作者: 小幸运Q | 来源:发表于2021-04-07 13:49 被阅读0次

image.png

dp存储该点含之前的所有子序列匹配的解个数。首先对第一列初始化,先确定第一个是否匹配然后再从第二位根据dp[0][i-1]+s[j]==t[i]?1:0初始化。之后根据dp[i-1][j-1]+dp[i][j-1]计算对应位的值。

  • 坑点:(1)状态转移方程(2)long long 防溢出(3)返回dp[-1][-1]
class Solution {
public:
    long long numDistinct(string s, string t) {
        if(t.length()==0||s.length()==0||t.length()>s.length()){
            return 0;
        }        
        long long dp[1005][1005]={0};
        int i,j;
        int pre=0;
        if(s[0]==t[0]){
            dp[0][0]=1;
        }
        for(i=1;i<s.length();i++){
            dp[0][i]=dp[0][i-1]+(s[i]==t[0]?1:0);
        }
        for(i=1;i<t.length();i++){
            for(j=i;j<s.length();j++){
                if(t[i]==s[j]){
                    dp[i][j]=dp[i-1][j-1]+dp[i][j-1];
                }
                else{
                    dp[i][j]=dp[i][j-1];
                }
            }
        }
        return dp[t.length()-1][s.length()-1];
    }
};

相关文章

  • 不同的子序列

    给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。 子序列字符串是原始字符串通过删除一些(或零个)产生的...

  • 不同的子序列

    dp存储该点含之前的所有子序列匹配的解个数。首先对第一列初始化,先确定第一个是否匹配然后再从第二位根据dp[0][...

  • 最大公共子序列(LCS)

    子序列 子序列不要求字符连续(这与串不同) 公共子序列 两个字符串中的相同的子序列 最大公共子序列的例子字符串 X...

  • LintCode 不同的子序列

    给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。 子序列字符串是原始字符串通过删除一些(或零个)产生的...

  • Leetcode 不同的子序列

    题目描述 leecode第115题:不同的子序列[https://leetcode-cn.com/problems...

  • 最长公共子序列问题解析

    问题解读 最长公共子序列问题,就是找出两个字符串中,存在的最长的子序列 什么是子序列呢?子序列不同于公共子串,子串...

  • 115. 不同的子序列

    题目描述 distinct-subsequences 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中...

  • 115. 不同的子序列

    题目描述 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指...

  • 115. 不同的子序列

    给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删...

  • 115. 不同的子序列

    给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删...

网友评论

      本文标题:不同的子序列

      本文链接:https://www.haomeiwen.com/subject/eavucltx.html