Нужно написать алгоритм , который будет проверять наличие слова в слове .
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])
у меня постоянно выходит ошибка - выход за пределы массива . Не могу сам решить .Уже нет мыслей , как сделать .
Надо наоборот:
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;
А так нельзя ?
public boolean contains(String origin, String sub) {
if(origin.contains(sub)){
return true;
}
return false;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть метод, который возвращает List< String > (возможен любой объект), но я не знаю об этом и выясняю тип следующим способом: