Определение частоты появления символов в массиве строк

Обойдите все строки и увеличивайте счётчик каждого символа в Map. Для Unicode лучше использовать code points: char может быть только половиной суррогатной пары.

Короткий ответ

Что ответить на собеседовании

Обойдите все строки и увеличивайте счётчик каждого символа в Map. Для Unicode лучше использовать code points: char может быть только половиной суррогатной пары.

Подробный разбор

Ответ с пояснениями

Условие

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

Ответ

Обойдите все строки и увеличивайте счётчик каждого символа в Map. Для Unicode лучше использовать code points: char может быть только половиной суррогатной пары.

static Map<Integer, Long> frequencies(String[] strings) {
    Map<Integer, Long> counts = new HashMap<>();
    for (String text : strings) {
        java.util.Objects.requireNonNull(text);
        text.codePoints().forEach(cp -> counts.merge(cp, 1L, Long::sum));
    }
    return counts;
}

Импорты Map и HashMap из java.util. Для печати символа по ключу используйте new String(Character.toChars(cp)). Регистр и пробелы учитываются; null-строки запрещены. Ожидаемое время O(общей длины), память O(k). Если нужен фиксированный порядок вывода, отсортируйте ключи отдельно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее