AlgoLounge

Interleaving String

hard

Given strings s1, s2, and s3, find whether s3 is formed by an interleaving of s1 and s2.

An interleaving of two strings s and t is a configuration where s and t are divided into n and m substrings respectively, such that:

  • s = s1 + s2 + ... + sn
  • t = t1 + t2 + ... + tm
  • |n - m| <= 1
  • The interleaving is s1 + t1 + s2 + t2 + s3 + t3 + ... or t1 + s1 + t2 + s2 + t3 + s3 + ...

Note: a + b is the concatenation of strings a and b.

Examples

Example 1

Input:  s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
Output: true

Example 2

Input:  s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
Output: false

Example 3

Input:  s1 = "", s2 = "", s3 = ""
Output: true

Constraints

  • 0 <= s1.length, s2.length <= 100
  • 0 <= s3.length <= 200
  • s1, s2, and s3 consist of lowercase English letters
TypeScript
Loading editor…
List of test cases (10)
Case 1
s1 = "aabcc"
s2 = "dbbca"
s3 = "aadbbcbcac"
Case 2
s1 = "aabcc"
s2 = "dbbca"
s3 = "aadbbbaccc"
Case 3
s1 = ""
s2 = ""
s3 = ""
Case 4
s1 = "a"
s2 = "b"
s3 = "ab"
Case 5
s1 = "a"
s2 = "b"
s3 = "ba"
Case 6
s1 = "a"
s2 = "b"
s3 = "c"
Case 7
s1 = "abc"
s2 = "def"
s3 = "adbecf"
Case 8
s1 = "abc"
s2 = "def"
s3 = "abcdef"
Case 9
s1 = "abc"
s2 = "def"
s3 = "defabc"
Case 10
s1 = "abc"
s2 = "def"
s3 = "abdecf"