Scramble String
We can scramble a string s to get a string t using the following algorithm:
1. If the length of the string is 1, stop.
2. If the length of the string is > 1, do the following:
- Split the string into two non-empty substrings at a random index, i.e., if the string is
s, divide it toxandywheres = x + y. - Randomly decide to swap the two substrings or to keep them in the same order. i.e., after this step,
smay becomes = x + yors = y + x. - Apply step 1 recursively on each of the two substrings
xandy.
Given two strings s1 and s2 of the same length, return true if s2 is a scrambled string of s1, otherwise, return false.
Example 1
Input
s1 = "great", s2 = "rgeat"Output
trueSplitting
great into gr and eat, then scrambling gr into rg, produces rgeat.Example 2
Input
s1 = "abcde", s2 = "caebd"Output
falseNo sequence of valid recursive splits and swaps can transform
abcde into caebd.Constraints
- s1.length == s2.length
- 1 <= s1.length <= 30
- s1 and s2 consist of lowercase English letters