chenfy27的刷题记录

导航

leetcode115 不同的子序列

给定两个字符串s和t,统计并返回在s的子序列中t出现的个数,结果对1E9+7取模。
1<=|s|,|t|<=1000

分析:判断两字符串的最后一个字符:如果相同,则可以选择匹配或者不匹配;如果不同,则只能选择不匹配。初始条件:t为空时答案为1。

mint dp[1005][1005];
class Solution {
public:
    int numDistinct(string s, string t) {
        int ns = s.size();
        int nt = t.size();
        for (int i = 0; i <= ns; i++) {
            dp[i][0] = 1;
        }
        for (int i = 1; i <= ns; i++) {
            for (int j = 1; j <= nt; 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[ns][nt].val();
    }
};

posted on 2025-01-12 15:21  chenfy27  阅读(6)  评论(0)    收藏  举报