我正在尝试进行递归搜索以检查子字符串是否出现在主字符串中。如果它不存在则返回false,如果存在则返回true。我不允许在java
中使用containscs()方法这是我到目前为止所尝试的
public boolean myContains(String s1, String s2){
if(s1 == null || s2 == null)
return false;
if(s1.isEmpty() || s2.isEmpty())
return false;
//int remain= s2.substring(s1);
return myContains(s1, s2.substring(1));
}
调用方法如下所示
System.out.println( test.myContains("an", "banana"));
答案 0 :(得分:2)
你必须检查s2是否以s1开头。如果是,则返回true。如果没有删除s2的第一个字符并重做测试。
我认为这是你尝试过的。但你错过了检查s2是否以s1开头然后返回true
的块public boolean myContains(String s1, String s2){
if(s1 == null || s2 == null)
return false;
if(s1.isEmpty() || s2.isEmpty())
return false;
if(s2.startsWith(s1))
return true;
return myContains(s1, s2.substring(1));
}
答案 1 :(得分:0)
如果你应该自己实现一切,那么这也应该有用
public boolean myContains(String s1, String s2){
if(s1 == null || s2 == null)
return false;
if(s1.isEmpty() || s2.isEmpty())
return false;
if(s1.length() > s2.length())
return false;
boolean contains = true;
for(int i=0; i<s1.length(); i++){
if(s1.charAt(i)!=s2.charAt(i)){
contains=false;
break;
}
}
if(contains == true){return contains;}
return myContains(s1, s2.substring(1));
}