рекурсивный поиск подстроки Java - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь выполнить рекурсивный поиск, чтобы проверить, появляется ли подстрока в основной строке. Он вернет false, если его там нет, и вернет true, если он существует. Мне не разрешено использовать метод containscs () в java

это то, что я пробовал до сих пор

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"));

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Если вы должны все реализовать самостоятельно, это тоже должно сработать

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));
}
0 голосов
/ 27 апреля 2018

Вы должны проверить, начинается ли s2 с s1. Если да, верните истину. Если нет, удалите первый символ 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...