Skip to content

Commit 854a4b4

Browse files
committed
feat: add solution 2 swift implementation to lcof2 problem: No.096
1 parent 1fdf6c1 commit 854a4b4

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
@@ -640,6 +640,37 @@ public class Solution {
640640
}
641641
```
642642

643+
#### Swift
644+
645+
```swift
646+
class Solution {
647+
func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool {
648+
let m = s1.count, n = s2.count
649+
if m + n != s3.count {
650+
return false
651+
}
652+
653+
let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3)
654+
var dp = Array(repeating: Array(repeating: false, count: n + 1), count: m + 1)
655+
dp[0][0] = true
656+
657+
for i in 0...m {
658+
for j in 0...n {
659+
let k = i + j - 1
660+
if i > 0 && s1[i - 1] == s3[k] {
661+
dp[i][j] = dp[i][j] || dp[i - 1][j]
662+
}
663+
if j > 0 && s2[j - 1] == s3[k] {
664+
dp[i][j] = dp[i][j] || dp[i][j - 1]
665+
}
666+
}
667+
}
668+
669+
return dp[m][n]
670+
}
671+
}
672+
```
673+
643674
<!-- tabs:end -->
644675

645676
<!-- 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)