递归子字符串搜索 java
recursive substring search java
我正在尝试进行递归搜索以检查子字符串是否出现在主字符串中。如果它不存在,它将 return false,如果存在,它将 return true。我不允许在 java
中使用 containcs() 方法
这是我目前尝试过的方法
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"));
您必须检查 s2 是否以 s1 开头。如果是 return 为真。如果不是删除 s2 的第一个字符并重做测试。
我认为这就是您尝试过的方法。但是您错过了检查 s2 是否以 s1 开头然后 return 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));
}
如果您应该自己实现所有内容,这也应该有效
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));
}
我正在尝试进行递归搜索以检查子字符串是否出现在主字符串中。如果它不存在,它将 return false,如果存在,它将 return true。我不允许在 java
中使用 containcs() 方法这是我目前尝试过的方法
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"));
您必须检查 s2 是否以 s1 开头。如果是 return 为真。如果不是删除 s2 的第一个字符并重做测试。
我认为这就是您尝试过的方法。但是您错过了检查 s2 是否以 s1 开头然后 return 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));
}
如果您应该自己实现所有内容,这也应该有效
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));
}