剑指 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]
    
    
    }





上一篇 下一篇

猜你喜欢

热点阅读