304 North Cardinal St.
Dorchester Center, MA 02124

# Scramble String LeetCode Solution

## Problem – Scramble String LeetCode Solution

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 to `x` and `y` where `s = x + y`.
• Randomly decide to swap the two substrings or to keep them in the same order. i.e., after this step, `s` may become `s = x + y` or `s = y + x`.
• Apply step 1 recursively on each of the two substrings `x` and `y`.

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: true
Explanation: One possible scenario applied on s1 is:
"great" --> "gr/eat" // divide at random index.
"gr/eat" --> "gr/eat" // random decision is not to swap the two substrings and keep them in order.
"gr/eat" --> "g/r / e/at" // apply the same algorithm recursively on both substrings. divide at random index each of them.
"g/r / e/at" --> "r/g / e/at" // random decision was to swap the first substring and to keep the second substring in the same order.
"r/g / e/at" --> "r/g / e/ a/t" // again apply the algorithm recursively, divide "at" to "a/t".
"r/g / e/ a/t" --> "r/g / e/ a/t" // random decision is to keep both substrings in the same order.
The algorithm stops now, and the result string is "rgeat" which is s2.
As one possible scenario led s1 to be scrambled to s2, we return true.
``````

Example 2:

``````Input: s1 = "abcde", s2 = "caebd"
Output: false
``````

Example 3:

``````Input: s1 = "a", s2 = "a"
Output: true
``````

Constraints:

• `s1.length == s2.length`
• `1 <= s1.length <= 30`
• `s1` and `s2` consist of lowercase English letters.

## Scramble String LeetCode Solution in C++

``````class Solution {
public:
bool isScramble(string s1, string s2) {
if(s1==s2)
return true;

int len = s1.length();
int count[26] = {0};
for(int i=0; i<len; i++)
{
count[s1[i]-'a']++;
count[s2[i]-'a']--;
}

for(int i=0; i<26; i++)
{
if(count[i]!=0)
return false;
}

for(int i=1; i<=len-1; i++)
{
if( isScramble(s1.substr(0,i), s2.substr(0,i)) && isScramble(s1.substr(i), s2.substr(i)))
return true;
if( isScramble(s1.substr(0,i), s2.substr(len-i)) && isScramble(s1.substr(i), s2.substr(0,len-i)))
return true;
}
return false;
}
};
``````

## Scramble String LeetCode Solution in Java

``````public class Solution {
public boolean isScramble(String s1, String s2) {
if (s1.equals(s2)) return true;

int[] letters = new int[26];
for (int i=0; i<s1.length(); i++) {
letters[s1.charAt(i)-'a']++;
letters[s2.charAt(i)-'a']--;
}
for (int i=0; i<26; i++) if (letters[i]!=0) return false;

for (int i=1; i<s1.length(); i++) {
if (isScramble(s1.substring(0,i), s2.substring(0,i))
&& isScramble(s1.substring(i), s2.substring(i))) return true;
if (isScramble(s1.substring(0,i), s2.substring(s2.length()-i))
&& isScramble(s1.substring(i), s2.substring(0,s2.length()-i))) return true;
}
return false;
}
}
``````

## Scramble String LeetCode Solution in Python

``````class Solution:
# @return a boolean
def isScramble(self, s1, s2):
n, m = len(s1), len(s2)
if n != m or sorted(s1) != sorted(s2):
return False
if n < 4 or s1 == s2:
return True
f = self.isScramble
for i in range(1, n):
if f(s1[:i], s2[:i]) and f(s1[i:], s2[i:]) or \
f(s1[:i], s2[-i:]) and f(s1[i:], s2[:-i]):
return True
return False``````
##### Scramble String LeetCode Solution Review:

In our experience, we suggest you solve this Scramble String LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the Scramble String LeetCode Solution

Find on Leetcode

##### Conclusion:

I hope this Scramble String LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.

Keep Learning!

More Coding Solutions >>

LeetCode Solutions

Hacker Rank Solutions

CodeChef Solutions