【发布时间】:2019-06-13 16:18:49
【问题描述】:
我正在尝试编写一个获取两个字符串的方法,并检查它是否能够对它们进行子串化以获得相同的字符串。例如,如果 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;
}
请帮忙?
【问题讨论】:
-
“不工作”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
-
欢迎来到 SO! “能够对它们进行子串化以获得相同的字符串”是什么意思?请用预期的 i/o 和示例进行说明。
-
对不起,我的意思是这个方法返回“false”而不是“true”。因为 s1 = "abc" 和 s2 = "abbbc",所以我可以使用 s2.substring(3) 来获取 s1。这就是为什么我希望该方法将返回“true”。
-
虽然我不确定您在做什么,但关于 Java 的重要一点是
s1==s2不比较字符串,而是比较对象引用。你必须改用s1.equals(s2) -
"abc" 不是 "abbbc" 的子串。
标签: java recursion backtracking