Пусть w - массив длины n. Напишите алгоритм разделения и покорения в java, чтобы определить количество раз, когда появляются 3 последовательных одинаковых символа. Ниже приведен алгоритм, который я написал. Ответ должен быть 5, но он дает мне 0. Может ли кто-нибудь обнаружить ошибку? Учитывая ш = abrabbbcccccfhdddgfr алгоритм должен вернуть 5, так как он соответствует пять вхождений 3 последовательных одинаковых символов: 1 раз ГЭБ, 3 раза КТС е 1 раз ДДДDivide and Conquer Algorithm [char array]
public class Test {
public static void main (String[] args){
char[] w = {'a','b','r','a','b','b','b','c','c','c','c',
'c','f','h','d','d','d','g','f','r'};
System.out.println(conta_triple_main(w));
}
public static int conta_triple_main(char[] w){
if (w.length <= 2)
return 0;
else
return conta_triple(w, 0, w.length-1);
}
public static int conta_triple(char[] w, int i, int f){
int m,result;
if(i >= f-1)
return 0;
else {
m = (i + f)/2;
int sx = conta_triple(w, i, m);
int dx = conta_triple(w, m+1, f);
result = sx + dx;
if ((m >= w.length-1) && (w[m-1] == w[m]) && (w[m] == w[m+1]))
result++;
if ((m >= w.length-2) && (w[m] == w[m+1]) && (w[m+1] == w[m+2]))
result++;
}
return result;
}
}
-1 Каков ваш вопрос? Какие ошибки вы видите и т. Д.? – bblincoe
@bblincoe, «Любой может заметить ошибку» - вопрос, который я предполагаю ... его просто отсутствует знак вопроса. у него есть вход, ожидаемый выход и фактический выход + его попытка решить проблему => +1! – A4L
Выглядит как работа для отладчика. Посмотрите, будете ли вы когда-либо передавать свои операторы 'if' –