Skip to content

Latest commit

 

History

History
54 lines (39 loc) · 1.77 KB

count_letters.md

File metadata and controls

54 lines (39 loc) · 1.77 KB

Количество повторов символов в строке

Условие

Дана строка, необходимо заменить повторяющиеся подряд символы числом повторений. Если повторов нет, то символ трогать не надо.

Пример

Input: AAA
Output: A3

Input: AAABB
Output: A3B2

Input: AAABBCDDE
Output: A3B2CD2E

Решение

Заводим переменные, хранящую символ и количество его повторов. Для начала положим туда первый символ из строки. Если следующий символ тот же, то просто увеличиваем счетчик. Если нет, то записываем символ и количество повторов (если повторов нет, то кладем просто символ). При этом новый символ записываем в нашу переменную и сбрасываем количество повторов.

    static String countLetters(String line) {
        char currentLetter = line.charAt(0);
        int count = 1;

        StringBuilder result = new StringBuilder();
        for (char ch : line.substring(1).toCharArray()) {
            if (currentLetter == ch) {
                count++;
            } else {
                result.append(currentLetter);

                if (count > 1) {
                    result.append(count);
                }

                currentLetter = ch;
                count = 1;
            }
        }

        result.append(currentLetter);

        if (count > 1) {
            result.append(count);
        }

        return result.toString();
    }