力扣 不同子串行

2022-09-15 00:24:27 字數 949 閱讀 8479

給定乙個字串 s 和乙個字串 t ,s = "rabbbit", t = "rabbit",計算在 s 的子串行中 t 出現的個數。

字串的乙個 子串行是指,通過刪除一些(也可以不刪除)字元且不干擾剩餘字元相對位置所組成的新字串。(例如,"ace" 是 "abcde" 的乙個子串行,而 "aec" 不是)

此時我們通過矩陣來解決該問題,矩陣的列為母串,行為子串。建立乙個二維陣列x,對陣列進行初始化,當子串長度為0時,所有次數都是1,當母串長度為0時,所有次數都是0。接著,如果子串的最後乙個字母和母串的最後乙個字母不同,說明新加的母串字母沒有產生新的可能性,可以沿用該子串在較短母串的出現次數,所以x[i][j] = x[i][j-1]。如果子串的最後乙個字母和母串的最後乙個字母相同,說明新加的母串字母帶來了新的可能性,我們不僅算上x[i][j-1],也要算上新的可能性。新的可能性其實就是在既沒有最後這個母串字母也沒有最後這個子串字母時,子串出現的次數,我們相當於為所有這些可能性都新增乙個新的可能。所以,這時x[i][j] = x[i][j-1] + x[i-1][j-1],下圖是以rabbbit和rabbit為例的矩陣示意圖。計算元素值時,當末尾字母一樣,實際上是左方數字加左上方數字,當不一樣時,就是左方的數字。ra

bbbi

t012

3456

7011

1111

11r1

0111

1111

a200

1111

11b3

0001

2333

b400

0013

33i5

0000

0033

t600

0000

03j**a實現**:

class

solution

return

x[t.length()][s.length()];

}}

力扣解題思路 115 不同的子串行 糾錯記錄

思路 給定乙個字串 s 和乙個字串 t,計算在 s 的子串行中 t 出現的個數。乙個字串的乙個子串行是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 題目資料保證答案符合 32 位帶符號整數範圍。輸入 s ra...

力扣每日一題115 不同的子串行

1.暴力法超時 class solution if i s.size i t.size return 到任意末端返回 if s i t i else return public int numdistinct string s,string t 2.動態規劃 從後往前遍歷 dp i j 代表 s i...

力扣 1143 最長公共子串行

給定兩個字串text1和text2,返回這兩個字串的最長公共子串行的長度。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行。兩個字串的...