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 {
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 -->
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