87. Scramble String
Last updated
Last updated
/**
* Time complexity :
* Space complexity :
*/
class Solution {
public boolean isScramble(String s1, String s2) {
if(s1.length() != s2.length()) return false;
if(s1.isEmpty() || s2.equals(s1)) return true;
int len = s1.length();
int[] countChars = new int[26];
for(int i = 0; i < len; i++) {
countChars[s1.charAt(i)-'a']++;
countChars[s2.charAt(i)-'a']--;
}
for(int i = 0; i < 26; i++) {
if(countChars[i] != 0) return false;
}
for(int i = 1; i < len; 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(len-i)) &&
isScramble(s1.substring(i), s2.substring(0, len-i))) {
return true;
}
}
return false;
}
}