zoukankan      html  css  js  c++  java
  • 115. 不同的子序列

     

    给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

    字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)

    题目数据保证答案符合 32 位带符号整数范围。

    示例 1:

    输入:s = "rabbbit", t = "rabbit"
    输出3
    解释:
    如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案rabbbit
    rabbbit
    rabbbit

    示例 2:

    输入:s = "babgbag", t = "bag"
    输出5
    解释:
    如下图所示, 有 5 种可以从 s 中得到 "bag" 的方案babgbag
    babgbag
    babgbag
    babgbag
    babgbag
    

    提示:

    • 0 <= s.length, t.length <= 1000
    • s 和 t 由英文字母组成
     1 class Solution {
     2 public:
     3     int numDistinct(string t, string s) {
     4         uint64_t n = s.size();
     5         uint64_t m = t.size();
     6         // s[:i] 在t[:j] 出现的个数
     7         uint64_t dp[n+1][m+1];
     8 
     9         // s[:i] 在空字符串中出现的次数是0
    10         for(uint64_t i = 0;i < n+1; i++) {
    11             dp[i][0] = 0;
    12         }
    13         // 空字符串 在 t子序列中出现的次数1
    14         for(uint64_t j = 0; j < m+1;j++) {
    15             dp[0][j] = 1;
    16         }
    17         dp[0][0] = 1;
    18         // 空字符串 在 空字符串子序列中出现的次数1
    19 
    20         for(uint64_t i =1;i<n+1;i++) {
    21             for(uint64_t j = 1;j < m+1;j++) {
    22                 if(s[i-1]==t[j-1]) {
    23                     // 删除 t[i] s[j] 都可以删除 
    24     
    25                     dp[i][j] = dp[i-1][j-1] + dp[i][j-1];
    26                 } else {
    27                     // 删除 t[j]
    28                     dp[i][j] = dp[i][j-1];
    29                 }
    30             }
    31         }
    32 
    33 
    34         return dp[n][m];
    35     }
    36 };
  • 相关阅读:
    SpringBoot实现原理
    常见Http状态码大全
    forward(转发)和redirect(重定向)有什么区别
    1094. Car Pooling (M)
    0980. Unique Paths III (H)
    1291. Sequential Digits (M)
    0121. Best Time to Buy and Sell Stock (E)
    1041. Robot Bounded In Circle (M)
    0421. Maximum XOR of Two Numbers in an Array (M)
    0216. Combination Sum III (M)
  • 原文地址:https://www.cnblogs.com/zle1992/p/15265569.html
Copyright © 2011-2022 走看看