Если «первая» означает первую по позиции букву, встречающуюся более одного раза, сначала посчитайте частоты, затем найдите первый символ с частотой больше единицы.
Первая повторяющаяся буква
Если «первая» означает первую по позиции букву, встречающуюся более одного раза, сначала посчитайте частоты, затем найдите первый символ с частотой больше единицы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Вход — строка, состоящая только из букв. Требуется найти первую букву, которая появляется в строке более одного раза, и вернуть её. Если таких букв нет, вернуть null.
Ответ
Если «первая» означает первую по позиции букву, встречающуюся более одного раза, сначала посчитайте частоты, затем найдите первый символ с частотой больше единицы.
function firstRepeated(text) {
const counts = new Map();
for (const char of text) counts.set(char, (counts.get(char) ?? 0) + 1);
for (const char of text) if (counts.get(char) > 1) return char;
return null;
}
Для abccba ответ a. Другая возможная трактовка — символ, чей повтор встретился раньше всего; тогда ответ c и достаточно Set за один проход. Без примеров важно оговорить этот выбор. Реализация выше сохраняет регистр и работает за O(n) времени.