Посчитайте частоты цифр 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).