Skip to content

Commit 29ab015

Browse files
authored
feat: add solution 2 swift implementation to lcof2 problem: No.096 (#3483)
1 parent ce1d4f8 commit 29ab015

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

lcof2/剑指 Offer II 096. 字符串交织/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,37 @@ public class Solution {
685685
}
686686
```
687687

688+
#### Swift
689+
690+
```swift
691+
class Solution {
692+
func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool {
693+
let m = s1.count, n = s2.count
694+
if m + n != s3.count {
695+
return false
696+
}
697+
698+
let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3)
699+
var dp = Array(repeating: Array(repeating: false, count: n + 1), count: m + 1)
700+
dp[0][0] = true
701+
702+
for i in 0...m {
703+
for j in 0...n {
704+
let k = i + j - 1
705+
if i > 0 && s1[i - 1] == s3[k] {
706+
dp[i][j] = dp[i][j] || dp[i - 1][j]
707+
}
708+
if j > 0 && s2[j - 1] == s3[k] {
709+
dp[i][j] = dp[i][j] || dp[i][j - 1]
710+
}
711+
}
712+
}
713+
714+
return dp[m][n]
715+
}
716+
}
717+
```
718+
688719
<!-- tabs:end -->
689720

690721
<!-- solution:end -->
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool {
3+
let m = s1.count, n = s2.count
4+
if m + n != s3.count {
5+
return false
6+
}
7+
8+
let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3)
9+
var dp = Array(repeating: Array(repeating: false, count: n + 1), count: m + 1)
10+
dp[0][0] = true
11+
12+
for i in 0...m {
13+
for j in 0...n {
14+
let k = i + j - 1
15+
if i > 0 && s1[i - 1] == s3[k] {
16+
dp[i][j] = dp[i][j] || dp[i - 1][j]
17+
}
18+
if j > 0 && s2[j - 1] == s3[k] {
19+
dp[i][j] = dp[i][j] || dp[i][j - 1]
20+
}
21+
}
22+
}
23+
24+
return dp[m][n]
25+
}
26+
}

0 commit comments

Comments
 (0)