87. Scramble String

代码1

f[i][j][k] 表示 s1的 i 到 i + k 子字符是不是与 s2 的 j 到 j + k 的子字符符合。
Runtime: Runtime: 6 ms, faster than 39.75% of Java online submissions for Scramble String.

class Solution {
    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];
        for (int i = 0; i < len; i++) {
            for (int j = 0; j < len; j++) {
                if (s1.charAt(i) == s2.charAt(j)) f[i][j][1] = true;
            }
        }
        for (int k = 2; k <= len; k++) {
            for (int i = 0; i + k <= len; i++) {
                for (int j = 0; j + k <= len; j++) {
                    for (int q = 1; q < k; q++) {
                        if (f[i][j][q] && f[i + q][j + q][k - q]) {
                            f[i][j][k] = true;
                            break;
                        }
                        if (f[i][j + k - q][q] && f[i + q][j][k - q]) {
                            f[i][j][k] = true;
                            break; 
                        }
                    }
                }
            }
        }
        return f[0][0][len];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容