剑指 Offer II 097. 子序列的数目
2022-08-22 本文已影响0人
邦_
func numDistinct(_ s: String, _ t: String) -> Int {
let len1 = s.count ,len2 = t.count
if len1 < len2 {
return 0
}
let temp = Array.init(repeating: 0, count: len2 + 1)
var dp = Array.init(repeating: temp, count: len1 + 1)
let arrayS = Array(s)
let arrayT = Array(t)
for i in 0...len1 {
dp[i][0] = 1
}
for i in 1...len1 {
let c1 = arrayS[i - 1]
for j in 1...len2 {
let c2 = arrayT[j - 1]
if c1 == c2 {
dp[i][j] = dp[i - 1][j] &+ dp[i - 1][j - 1]
}else{
dp[i][j] = dp[i - 1][j]
}
}
}
return dp[len1][len2]
}