码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 97. 交错字符串

时间:2018-11-04 23:59:14      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:desc   des   ble   ref   false   不难   指针   href   一个   

97. 交错字符串

题不难,dfs加回溯即可。实际上就是暴力搜索,穷举所有选择路径。

以s3的每一个字母做一个状态,就面临两个抉择,选s1还是选s2。选s1路不通的话,回溯回来改选s2即可。

class Solution {
    // 状态:String s1, String s2, String s3, int p, int q, int i
    // p为当前s1的下标指针,q为当前s2的下标指针,i为s3的
    boolean dfs(String s1, String s2, String s3, int p, int q, int i) {
        if (i >= s3.length()) {
            return p >= s1.length() && q >= s2.length();
        }
        char ch = s3.charAt(i);
        if (p < s1.length() && ch == s1.charAt(p)) {
            if (!dfs(s1, s2, s3, p + 1, q, i + 1)) {
                if (q < s2.length() && ch == s2.charAt(q)) {
                    return dfs(s1, s2, s3, p, q + 1, i + 1);
                }
            } else {
                return true;
            }
        } else if (q < s2.length() && ch == s2.charAt(q)) {
            return dfs(s1, s2, s3, p, q + 1, i + 1);
        }
        return false;
    }

    public boolean isInterleave(String s1, String s2, String s3) {
        if (s1.length()+s2.length() != s3.length()) return false;
        return dfs(s1, s2, s3, 0, 0, 0);
    }
}

[leetcode] 97. 交错字符串

标签:desc   des   ble   ref   false   不难   指针   href   一个   

原文地址:https://www.cnblogs.com/acbingo/p/9906438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!