-
BingoC++:
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; } };
-
BingoJava:
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; } }
-