我正在尝试编写一个获取两个字符串的方法,并检查其是否可以将它们子字符串化以获取相同的字符串。例如,如果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;
}
请帮忙吗?
答案 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方法来进行递归操作