Определение счастливого числа в последовательности

Посчитайте частоты цифр 1–9 и найдите цифру, частота которой равна её значению. Если подходящих несколько, нужно договориться о выборе.

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

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

Посчитайте частоты цифр 1–9 и найдите цифру, частота которой равна её значению. Если подходящих несколько, нужно договориться о выборе.

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

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

Условие

Написать функцию, получающую на вход строку, состоящую из цифр, и возвращающую «счастливое» число. Счастливым считается число X, которое встречается ровно X раз в переданной строке. Если такого числа нет, функция должна вернуть 0.

Ответ

Посчитайте частоты цифр 1–9 и найдите цифру, частота которой равна её значению. Если подходящих несколько, нужно договориться о выборе.

Ниже возвращается максимальная подходящая цифра:

function luckyNumber(text) {
  const counts = Array(10).fill(0);
  for (const char of text) {
    if (char < '0' || char > '9') throw new Error('Ожидается строка цифр');
    counts[Number(char)]++;
  }
  for (let value = 9; value >= 1; value--) if (counts[value] === value) return value;
  return 0;
}

Здесь число трактуется как отдельная цифра, не произвольная подстрока. Ноль служит отсутствием результата. Время O(n), память O(1).

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

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

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

Подробнее