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