Сегодня решал задачу на 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 символов, программа работает слишком долго и время ожидания выполнения программы на сайте истекает. Как можно сделать данное решение более быстрым?