From 5f48817110151537c6635f014912c8aa2060b4f0 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 3 Sep 2024 07:56:52 +0100 Subject: [PATCH] feat: add solution 2 swift implementation to lcof2 problem: No.097 --- .../README.md" | 30 +++++++++++++++++++ .../Solution.swift" | 25 ++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 "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" 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 b0d69eacdb89..5b41a6be5ca7 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 000000000000..7043361fd52e --- /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