leetcode——87.扰乱字符串

动态规划,还是学不会,,这道题好难啊!!!!

但是思路对了之后又是如此清晰。

public boolean isScramble(String s1, String s2) {
        if(s1.length() != s2.length()){
            return false;
        }
        int len = s1.length();
        boolean[][][] f = new boolean[len][len][len+1];//f[i][j][k]代表长度为k的以i开始的s1与以j开始的s2是否是扰乱字符串
        for(int i = 0;i<len;i++){
            for(int j = 0;j<len;j++){
                f[i][j][1] = s1.charAt(i) ==s2.charAt(j);
            }
        }
        for(int n = 2;n<=len;n++){
            for(int i = 0;i+n<= len;i++){
                for(int j = 0;j+n<=len;j++){
                    for(int k = 1;k<n;k++){
                        if((f[i][j][k] && f[i+k][j+k][n-k])||(f[i][j+n-k][k]&&f[i+k][j][n-k])){
                            f[i][j][n] = true;
                            break;
                        }
                    }
                }
            }
        }
        return f[0][0][len];
    }

 ——2020.6.27

猜你喜欢

转载自www.cnblogs.com/taoyuxin/p/13198084.html