Упражнение по рекурсивным методам:
Используйте технику «разделяй и властвуй», чтобы написать метод Java
int findBBA(массив char[], int left, int right) который возвращает частоту
строки ''BBA'' в массиве, расположенном слева направо.
Привет всем, мне удалось решить только такую проблему когда последовательность
была длиной в два символа/цифры (например, количество вхождений «01» в
массиве целых чисел или «BA» в одном из символов).
Я провел небольшое исследование, но не нашел решения этой проблемы. Кто-нибудь может помочь?
Большое спасибо.
public static int _findBBA(char[] a, int l, int r) {
if(l+2 >= r)
return 0;
int mid = (l+r)/2;
int find1 = _findBBA(a, l, mid);
int find2 = _findBBA(a, mid, r);
int res = find1 + find2;
if(a.length % 2 == 0) {
if(a[mid-1] == 'B' && a[mid] == 'B' && a[mid+1] == 'A')
res++;
if(a[mid-2] == 'B' && a[mid-1] == 'B' && a[mid] == 'A')
res++;
}
else
if(a[mid-1] == 'B' && a[mid] == 'B' && a[mid+1] == 'A')
res++;
return res;
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... -recursion