leetcode
給定乙個字串 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
^^^思路和**
還是字串配準的問題,動態規劃
ø r a b b b i t
ø 1 1 1 1 1 1 1 1
r 0 1 1 1 1 1 1 1
a 0 0 1 1 1 1 1 1
b 0 0 0 1 2 3 3 3
b 0 0 0 0 1 3 3 3
i 0 0 0 0 0 0 3 3
t 0 0 0 0 0 0 0 3
也是這個矩形怎麼到達右下角的問題,dp[i][j] = dp[i][j-1] + dp[i-1][j-1]。第一項肯定有,第二項有沒有取決於s[i-1]==t[i-1]。
參考鏈結
class
solution
}return dp[n]
[m];}}
;
不同子串行
難度 hard 備註 出自leetcode 題目描述 package 不同子串行 version 1.0 date 2020 8 3 16 28 題目描述 給定兩個字串s和t,求s有多少個不同的子串與t相同。s的子串定義為在s中任意去掉0個或者多個字元形成的串。子串可以不連續,但是相對位置不能變。比...
32 不同的子串行
題目描述 給定乙個字串 s 和乙個字串 t,計算在 s 的子串行中 t 出現的個數。乙個字串的乙個子串行是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 示例 1 輸入 s rabbbit t rabbit 輸...
115 不同的子串行
題目.high dp用熟了反而覺得簡單了。s字串增加乙個字元,要麼這個字元與t的最後乙個字元相同,要麼不相同 package main import fmt func numdistinct s string t string int iflen t 0 dp make int len s 1 fo...