File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed
lcof2/剑指 Offer II 096. 字符串交织 Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change @@ -685,6 +685,37 @@ public class Solution {
685
685
}
686
686
```
687
687
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
+
688
719
<!-- tabs: end -->
689
720
690
721
<!-- solution: end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments