6/06/2014

109. Scramble String

public class Solution {
    public boolean isScramble(String s1, String s2) {
        if (s1.length()!=s2.length()) return false;
       
        if (s1.length()==1 && s2.length()==1) return s1.charAt(0)==s2.charAt(0);
       
        char[] s1ch = s1.toCharArray();
        char[] s2ch = s2.toCharArray();
       
        Arrays.sort(s1ch);
        Arrays.sort(s2ch);
       
        if (!new String(s1ch).equals(new String(s2ch))) return false;
       
        for (int i=1; i<s1.length(); i++) {
            String s11 = s1.substring(0, i);
            String s12 = s1.substring(i);
            String s21 = s2.substring(0, i);
            String s22 = s2.substring(i);
           
            if (isScramble(s11,s21) && isScramble(s12,s22)) return true;
           
            s21 = s2.substring(0, s2.length()-i);
            s22 = s2.substring(s2.length()-i);
           
            if (isScramble(s11,s22) && isScramble(s12,s21)) return true;
        }
       
        return false;
    }
}

没有评论:

发表评论