如何在java中使用回溯递归

如何在java中使用回溯递归,java,recursion,backtracking,Java,Recursion,Backtracking,我正在尝试编写一个方法,获取两个字符串,并检查它是否能够对它们进行子串以获取相同的字符串。例如,如果s1=“abc”和s2=“abbbc”,则返回true。我想在回溯递归中实现它 static boolean isTrue(String s1,String s2,int count) { if(count == s1.length()){ return true; } else{ CharSequence cs = new StringBu

我正在尝试编写一个方法,获取两个字符串,并检查它是否能够对它们进行子串以获取相同的字符串。例如,如果s1=“abc”和s2=“abbbc”,则返回true。我想在回溯递归中实现它

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;
        }
    }
}
以下是我的代码,它不起作用:

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;
}

请提供一些帮助?

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

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方法进行检查,而无需递归。

“is not working”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们在哪些方面不同?欢迎访问!您所说的“能够对它们进行子串以获得相同的字符串”是什么意思?请说明预期的i/o和示例。对不起,我的意思是此方法返回“false”而不是“true”。因为s1=“abc”和s2=“abbbc”,我可以使用s2.substring(3)得到s1。这就是我希望该方法返回“true”的原因。虽然我不确定您在做什么,但Java的一个重要方面是
s1==s2
不比较字符串,而是比较对象引用。您必须使用
s1。equals(s2)
代替“abc”不是“abbbc”的子字符串。