Skip to content

Commit fc0c6bd

Browse files
committed
Create 0097-interleaving-string.swift
1 parent d41772a commit fc0c6bd

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

swift/0097-interleaving-string.swift

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Question Link: https://leetcode.com/problems/interleaving-string/
3+
*/
4+
5+
class Solution {
6+
func isInterleave(_ s1: String, _ s2: String, _ s3: String) -> Bool {
7+
let s1 = Array(s1), s2 = Array(s2), s3 = Array(s3)
8+
if s3.count != s1.count + s2.count {
9+
return false
10+
}
11+
var dp = Array(repeating: false, count: s2.count + 1)
12+
for i in 0..<s1.count + 1 {
13+
for j in 0..<s2.count + 1 {
14+
if i == 0 && j == 0 {
15+
dp[j] = true
16+
} else if i == 0 {
17+
dp[j] = dp[j - 1] && s2[j - 1] == s3[i + j - 1]
18+
} else if j == 0 {
19+
dp[j] = dp[j] && s1[i - 1] == s3[i + j - 1]
20+
} else {
21+
dp[j] = (dp[j] && s1[i - 1] == s3[i + j - 1]) || (dp[j - 1] && s2[j - 1] == s3[i + j - 1])
22+
}
23+
}
24+
}
25+
return dp[s2.count]
26+
}
27+
}

0 commit comments

Comments
 (0)