不同的子串行

2021-10-05 19:12:44 字數 1104 閱讀 8537

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...