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 @@ -640,6 +640,37 @@ public class Solution {
640
640
}
641
641
```
642
642
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
+
643
674
<!-- tabs: end -->
644
675
645
676
<!-- 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