From 854a4b4d86055ca793bfdee567f2adfea961ebee Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 3 Sep 2024 07:53:57 +0100 Subject: [PATCH] feat: add solution 2 swift implementation to lcof2 problem: No.096 --- .../README.md" | 31 +++++++++++++++++++ .../Solution2.swift" | 26 ++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 "lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/Solution2.swift" diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/README.md" index 7303593e9a389..a333c53d791d3 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/README.md" @@ -640,6 +640,37 @@ public class Solution { } ``` +#### Swift + +```swift +class Solution { + func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool { + let m = s1.count, n = s2.count + if m + n != s3.count { + return false + } + + let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3) + var dp = Array(repeating: Array(repeating: false, count: n + 1), count: m + 1) + dp[0][0] = true + + for i in 0...m { + for j in 0...n { + let k = i + j - 1 + if i > 0 && s1[i - 1] == s3[k] { + dp[i][j] = dp[i][j] || dp[i - 1][j] + } + if j > 0 && s2[j - 1] == s3[k] { + dp[i][j] = dp[i][j] || dp[i][j - 1] + } + } + } + + return dp[m][n] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/Solution2.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/Solution2.swift" new file mode 100644 index 0000000000000..4015d37c0b462 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 096. \345\255\227\347\254\246\344\270\262\344\272\244\347\273\207/Solution2.swift" @@ -0,0 +1,26 @@ +class Solution { + func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool { + let m = s1.count, n = s2.count + if m + n != s3.count { + return false + } + + let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3) + var dp = Array(repeating: Array(repeating: false, count: n + 1), count: m + 1) + dp[0][0] = true + + for i in 0...m { + for j in 0...n { + let k = i + j - 1 + if i > 0 && s1[i - 1] == s3[k] { + dp[i][j] = dp[i][j] || dp[i - 1][j] + } + if j > 0 && s2[j - 1] == s3[k] { + dp[i][j] = dp[i][j] || dp[i][j - 1] + } + } + } + + return dp[m][n] + } +} \ No newline at end of file