Нужно написать алгоритм , который будет проверять наличие слова в слове .
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;
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости