A
Результаты перемножаем. Это и есть ответ.
public static int factorial(final int i) {
return IntStream.range(1, i).reduce((x, y) -> x * y).orElse(1);
}
public static int split(final String s) {
final int total = Math.toIntExact(s.chars().filter(x -> x == 'a').count());
if (total == 0) {
return factorial(s.length() - 1);
}
final int[] count = new int[]{0, 0};
int first = 0;
int last = 0;
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i - 1) == 'a') count[0]++;
if (count[0] < total / 3) continue;
if (count[0] > total / 3) break;
first++;
}
for (int i = s.length(); i > 0; i--) {
if (s.charAt(i - 1) == 'a') count[1]++;
if (count[1] < total / 3) continue;
if (count[1] > total / 3) break;
last++;
}
return first * last;
}