如何在Java中使用回溯递归

时间:2019-01-19 18:44:32

标签: java recursion backtracking

我正在尝试编写一个获取两个字符串的方法,并检查其是否可以将它们子字符串化以获取相同的字符串。例如,如果s1 =“ abc”和s2 =“ abbbc”,它将返回true。我想在BackTracking递归中做到这一点。

这是我的无效代码:

private static boolean isTrue(String s1, String s2) {
    boolean right= false;

    if(s1 == s2)
        right = true;

    else {
        if(s1.length() > 0 && s2.length() > 0) {
            right = isTrue(s1, s2.substring(1)) || isTrue(s1.substring(1), s2.substring(1));
        }
    }

    return right;
}

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

假设您的意思是如果第二个字符串在第一个字符串中包含所有字符,那么这将是递归的解决方案。

static boolean isTrue(String s1,String s2,int count) {
    if(count == s1.length()){
        return true;
    }
    else{
        CharSequence cs = new StringBuilder(s1.substring(count, count+1));
        if(s2.contains(cs)){
            s2 = s2.replaceFirst(s1.substring(count, count+1), "");
            return isTrue(s1,s2,count+1);
        }
        else{
            return false;
        }
    }
}

如果您要检查第一个字符串是否为第二个字符串的子字符串,则可以使用contains方法来进行递归操作