Sobes.tech
Назад к вопросам
Middle+
5

/** * chars = ['a', 'a', 'a', 'b', 'b', 'c', 'a'] * return: a3b2ca2 */ class JavaTask3Solution { public String compress(char[] chars) { } }

Компании, где спрашивали
Ozon ФинтехOzon Финтех

Ответ от нейросети

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).