2022-03-27 18:35:17 +08:00
< p > Given strings < code > s1< / code > , < code > s2< / code > , and < code > s3< / code > , find whether < code > s3< / code > is formed by an < strong > interleaving< / strong > of < code > s1< / code > and < code > s2< / code > .< / p >
2023-12-09 18:42:21 +08:00
< p > An < strong > interleaving< / strong > of two strings < code > s< / code > and < code > t< / code > is a configuration where < code > s< / code > and < code > t< / code > are divided into < code > n< / code > and < code > m< / code > < span data-keyword = "substring-nonempty" > substrings< / span > respectively, such that:< / p >
2022-03-27 18:35:17 +08:00
< ul >
< li > < code > s = s< sub > 1< / sub > + s< sub > 2< / sub > + ... + s< sub > n< / sub > < / code > < / li >
< li > < code > t = t< sub > 1< / sub > + t< sub > 2< / sub > + ... + t< sub > m< / sub > < / code > < / li >
< li > < code > |n - m| < = 1< / code > < / li >
< li > The < strong > interleaving< / strong > is < code > s< sub > 1< / sub > + t< sub > 1< / sub > + s< sub > 2< / sub > + t< sub > 2< / sub > + s< sub > 3< / sub > + t< sub > 3< / sub > + ...< / code > or < code > t< sub > 1< / sub > + s< sub > 1< / sub > + t< sub > 2< / sub > + s< sub > 2< / sub > + t< sub > 3< / sub > + s< sub > 3< / sub > + ...< / code > < / li >
< / ul >
< p > < strong > Note:< / strong > < code > a + b< / code > is the concatenation of strings < code > a< / code > and < code > b< / code > .< / p >
< p > < / p >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 1:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2020/09/02/interleave.jpg" style = "width: 561px; height: 203px;" / >
< pre >
< strong > Input:< / strong > s1 = " aabcc" , s2 = " dbbca" , s3 = " aadbbcbcac"
< strong > Output:< / strong > true
2023-12-09 18:42:21 +08:00
< strong > Explanation:< / strong > One way to obtain s3 is:
Split s1 into s1 = " aa" + " bc" + " c" , and s2 into s2 = " dbbc" + " a" .
Interleaving the two splits, we get " aa" + " dbbc" + " bc" + " a" + " c" = " aadbbcbcac" .
Since s3 can be obtained by interleaving s1 and s2, we return true.
2022-03-27 18:35:17 +08:00
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 2:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< pre >
< strong > Input:< / strong > s1 = " aabcc" , s2 = " dbbca" , s3 = " aadbbbaccc"
< strong > Output:< / strong > false
2023-12-09 18:42:21 +08:00
< strong > Explanation:< / strong > Notice how it is impossible to interleave s2 with any other string to obtain s3.
2022-03-27 18:35:17 +08:00
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 3:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< pre >
< strong > Input:< / strong > s1 = " " , s2 = " " , s3 = " "
< strong > Output:< / strong > true
< / pre >
< p > < / p >
< p > < strong > Constraints:< / strong > < / p >
< ul >
< li > < code > 0 < = s1.length, s2.length < = 100< / code > < / li >
< li > < code > 0 < = s3.length < = 200< / code > < / li >
< li > < code > s1< / code > , < code > s2< / code > , and < code > s3< / code > consist of lowercase English letters.< / li >
< / ul >
< p > < / p >
< p > < strong > Follow up:< / strong > Could you solve it using only < code > O(s2.length)< / code > additional memory space?< / p >