diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/README.md" index b0d69eacdb89f..d5daf6b21c940 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/README.md" @@ -202,6 +202,36 @@ function numDistinct(s: string, t: string): number { } ``` +#### Swift + +```swift +class Solution { + func numDistinct(_ s: String, _ t: String) -> Int { + let m = s.count, n = t.count + let sArray = Array(s) + let tArray = Array(t) + + var dp = Array(repeating: Array(repeating: 0, count: n + 1), count: m + 1) + + + for i in 0...m { + dp[i][0] = 1 + } + + for i in 1...m { + for j in 1...n { + dp[i][j] = dp[i - 1][j] + if sArray[i - 1] == tArray[j - 1] { + dp[i][j] += dp[i - 1][j - 1] + } + } + } + + return dp[m][n] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" new file mode 100644 index 0000000000000..7043361fd52ef --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" @@ -0,0 +1,25 @@ +class Solution { + func numDistinct(_ s: String, _ t: String) -> Int { + let m = s.count, n = t.count + let sArray = Array(s) + let tArray = Array(t) + + var dp = Array(repeating: Array(repeating: 0, count: n + 1), count: m + 1) + + + for i in 0...m { + dp[i][0] = 1 + } + + for i in 1...m { + for j in 1...n { + dp[i][j] = dp[i - 1][j] + if sArray[i - 1] == tArray[j - 1] { + dp[i][j] += dp[i - 1][j - 1] + } + } + } + + return dp[m][n] + } +} \ No newline at end of file