Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 29ab015

Browse files
feat: add solution 2 swift implementation to lcof2 problem: No.096 (doocs#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)

AltStyle によって変換されたページ (->オリジナル) /