递归子字符串搜索 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));
}