Сегодня решал задачу на codewars.com (https://www.codewars.com/kata/5a331ea7ee1aae8f24000175). Написал такое решение :
public static char triangle(String row) {
        if (row.length() == 1)
            return row.charAt(0);
        while (row.length() != 1){
            String[] arr = row.split("");
            StringBuilder rowBuilder = new StringBuilder();
            for (int i = 1; i < arr.length; i++) {
                if (Objects.equals(arr[i - 1], arr[i]))
                    rowBuilder.append(arr[i]);
                if (arr[i - 1].equals("R") && arr[i].equals("B"))
                    rowBuilder.append("G");
                if (arr[i - 1].equals("R") && arr[i].equals("G"))
                    rowBuilder.append("B");
                if (arr[i - 1].equals("G") && arr[i].equals("B"))
                    rowBuilder.append("R");
                if (arr[i - 1].equals("G") && arr[i].equals("R"))
                    rowBuilder.append("B");
                if (arr[i - 1].equals("B") && arr[i].equals("R"))
                    rowBuilder.append("G");
                if (arr[i - 1].equals("B") && arr[i].equals("G"))
                    rowBuilder.append("R");
            }
            row = rowBuilder.toString();
        }
        return row.charAt(0);
    }
Но, работая со строкой длинной больше 10.000 символов, программа работает слишком долго и время ожидания выполнения программы на сайте истекает. Как можно сделать данное решение более быстрым?