Определение первого неповторяющегося символа

Сначала подсчитайте частоты символов, затем найдите первый символ с частотой 1. Если такого нет, верните null; порядок первого прохода должен соответствовать исходной строке.

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

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

Сначала подсчитайте частоты символов, затем найдите первый символ с частотой 1. Если такого нет, верните null; порядок первого прохода должен соответствовать исходной строке.

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

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

Условие

Реализуйте функцию firstUniqueChar(str), которая принимает строку и возвращает первый символ, встречающийся в ней только один раз. Если в строке нет символов с единственным вхождением, функция должна вернуть null.

console.log(firstUniqueChar("leetcode"));    // 'l'
console.log(firstUniqueChar("aabbccdde"));   // 'e'
console.log(firstUniqueChar("aabbcc"));      // null

Ответ

Сначала подсчитайте частоты символов, затем найдите первый символ с частотой 1. Если такого нет, верните null; порядок первого прохода должен соответствовать исходной строке.

function firstUniqueChar(str) {
  const counts = new Map();
  for (const ch of str) counts.set(ch, (counts.get(ch) ?? 0) + 1);
  for (const ch of str) if (counts.get(ch) === 1) return ch;
  return null;
}

Оба прохода используют for...of, поэтому работают с Unicode-кодовыми точками, а не отдельными UTF-16 половинами. Регистр и пробелы учитываются. Сложные графемы из нескольких кодовых точек требуют отдельной сегментации. Время O(n), память O(k) для k различных символов.

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

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

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

Подробнее