动态规划,还是学不会,,这道题好难啊!!!!
但是思路对了之后又是如此清晰。
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