Назад к вопросам
Ozon Финтех
Middle+
5
/** * chars = ['a', 'a', 'a', 'b', 'b', 'c', 'a'] * return: a3b2ca2 */ class JavaTask3Solution { public String compress(char[] chars) { } }
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для решения задачи сжатия массива символов в строку с подсчётом повторяющихся символов можно пройти по массиву, подсчитывая количество подряд идущих одинаковых символов, и формировать результат, добавляя символ и количество, если оно больше 1.
Пример реализации на Java:
class JavaTask3Solution {
public String compress(char[] chars) {
StringBuilder result = new StringBuilder();
int count = 1;
for (int i = 1; i <= chars.length; i++) {
if (i < chars.length && chars[i] == chars[i - 1]) {
count++;
} else {
result.append(chars[i - 1]);
if (count > 1) {
result.append(count);
}
count = 1;
}
}
return result.toString();
}
}
В этом коде мы итерируемся по массиву, сравниваем текущий символ с предыдущим, считаем количество повторов и при смене символа добавляем в результат символ и количество (если больше 1).