本人解這個題用的是動態規劃的思想。
dp[i][j]
代表t
前i
字串可以由s
j
字串組成最多個數.
當s[j] != t[i],這個時候dp[i][j] = dp[i][j - 1];
當s[j] == t[i],這個時候dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1];
其中dp[i - 1][j - 1]表示是用s[j]匹配t[i]的情況有多少;dp[i][j - 1]表示不用s[j]匹配t[i]的情況有多少(刪除s[j])。
用int型的會被越界,所以使用long。第二個紅框是初始化第乙個行,第乙個紅框和第乙個if是初始化第一例。這是自己用到的辦法。也可以把陣列定義為 long dp[size_t + 1][size_s + 1];,初始化情況如下:
leetcode 115 不同的子串行
思路 動態規劃 狀態定義 f x,y 記t中 0,x 範圍的子串為t 記s中 0,y 範圍的子串為s f x,y 表示在s 中t 出現的個數。狀態轉移 1 對於x 0的情況,a 當y 0時,如果s.charat 0 t.charat 0 則f 0,0 1 否則f 0,0 0。b 當y 0 時,如果s...
leetcode 115 不同的子串行
遞迴超時 唉 設dp i j 表示s 0 i 1 的子串行中t 0 j 1 出現的次數,則 1.若s i 1 t j 1 dp i j dp i 1 j 1 用s i 1 與t j 1 配對 dp i 1 j 拋棄s i 1 不用s i 1 與t j 1 配對 2.若s i 1 t j 1 dp i...
leetcode 115 不同的子串行
給定乙個字串 s 和乙個字串 t,計算在 s 的子串行中 t 出現的個數。乙個字串的乙個子串行是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 示例 1 輸入 s rabbbit t rabbit 輸出 3 解...