Помогите пожалуйста решить задачу

241
11 декабря 2017, 15:19

Нужно написать алгоритм , который будет проверять наличие слова в слове .

public class Hello {
    int count;
    boolean result;
    public boolean contains(String origin, String sub) {
        char[] one = origin.toCharArray();
        char[] two = sub.toCharArray();
        for (int i = 0; i <one.length ; i++) {
            for (int j = 0; j <two.length; j++) {
                //проверяем символы на идентичность
                if (two[i+j] == one[j]) {
                    count++;
                }
            }
        }
        if(count == two.length ) {
            String s = new String(two);
            result = origin.contains(s);
        }
        return result;
    }
}

Проблема в том , что при проверке условия if (two[i+j] == one[j]) у меня постоянно выходит ошибка - выход за пределы массива . Не могу сам решить .Уже нет мыслей , как сделать .

Answer 1

Надо наоборот:

for (int j = 0; j < two.length && i + j < one.length; j++) {
    if (two[j] == one[i + j]) {

Ну и неплохо бы обнулять count перед внутренним циклом:

for (int i = 0; i < one.length; i++) {
    count = 0;
    for (int j = 0; j < two.length && i + j < one.length; j++) {
       if (two[j] == one[i + j])
           count++;
       else
           break;
    }
    if (count == two.length)
        return true;
}
return false;
Answer 2

А так нельзя ?

public boolean contains(String origin, String sub) {
    if(origin.contains(sub)){
        return true;
    }
    return false;
}
READ ALSO
Multithreading vs concurency [дубликат]

Multithreading vs concurency [дубликат]

На данный вопрос уже ответили:

260
Как спарсить данные 3х разных классов?

Как спарсить данные 3х разных классов?

Добрый деньПолучаю даннеы от сервера

206
Создание Collection с reflection Type

Создание Collection с reflection Type

Есть метод, который возвращает List< String > (возможен любой объект), но я не знаю об этом и выясняю тип следующим способом:

209
Как реализовать мини-бд вопрос-ответ?

Как реализовать мини-бд вопрос-ответ?

Я даже не могу нормально написать заголовок вопроса, тк

208