• 115. Distinct Subsequences


    Given a string S and a string T, count the number of distinct subsequences of S which equals T.

    A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ACE" is a subsequence of "ABCDE" while "AEC" is not).

    Example 1:

    Input: S = "rabbbit", T = "rabbit"
    Output: 3 Explanation: As shown below, there are 3 ways you can generate "rabbit" from S. (The caret symbol ^ means the chosen letters)

    rabbbit ^^^^ ^^
    rabbbit

    ^^ ^^^^
    rabbbit
    ^^^ ^^^

    Example 2:

    Input: S = "babgbag", T = "bag"
    Output: 5 Explanation: As shown below, there are 5 ways you can generate "bag" from S. (The caret symbol ^ means the chosen letters)

    babgbag ^^ ^
    babgbag
    ^^ ^
    babgbag
    ^ ^^
    babgbag
    ^ ^^
    babgbag
    ^^^

    Approach #1: DP. [C++]

    class Solution {
    public:
        int numDistinct(string s, string t) {
            int ls = s.length();
            int lt = t.length();
            vector<vector<long>> dp(lt+1, vector<long>(ls+1));
            fill(dp[0].begin(), dp[0].end(), 1);
            for (int i = 1; i <= lt; ++i) {
                for (int j = 1; j <= ls; ++j) {
                    if (t[i-1] == s[j-1]) 
                        dp[i][j] = dp[i-1][j-1] + dp[i][j-1];
                    else 
                        dp[i][j] = dp[i][j-1];
                }
            }
            return dp[lt][ls];
        }
    };
    

      

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    hdu 1.2.4
    交换机&&路由器
    AP、AC、无线路由器
    肩胛骨
    无线路由器
    背部肌肉
    胸部肌肉
    redis未授权访问
    进制
    攻防实验
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10363481.html
Copyright © 2020-2023  润新知