Дано натуральное число п. Определить количество различных цифр в нем

Дано натуральное число п. Определить количество различных цифр в нем Направьте меня на верный путь ) P.s строки использовать нельзя

let num = 4564765;
    mas = [];
while (num) {
    mas.push(num % 10);
    num = Math.floor(num/10);
}
console.log(mas.reverse().join(','));
let count = 1;
for (let i = 0; i < mas.length-1; i++) {
    if(mas[0]==mas[i]) {
        i++;
    }
    else{
        count++;
    }
}
console.log(count);

Ответы (2 шт):

Автор решения: vsemozhebuty

Можно, например, схитрить. Превращаем число в строку. Строка поддерживает итерацию, поэтому её легко превратить в Set из уникальных цифр. Останется только получить размер этого Set.

console.log(new Set(String(4564765)).size);

Если строки нельзя, тогда так:

let num = 4564765;
const set = new Set();

while (num) {
  set.add(num % 10);
  num = Math.floor(num / 10);
}

console.log(set.size);

→ Ссылка
Автор решения: Qwertiy

function countDifferentDigits(x) {
  var c = Array(10).fill(0)
  do c[x%10] = 1; while (x = x / 10 | 0)
  return c.reduce((r, x) => r + x)
}

console.log(countDifferentDigits(4564765))
console.log(countDifferentDigits(0))
console.log(countDifferentDigits(1))
console.log(countDifferentDigits(10))
console.log(countDifferentDigits(11))
console.log(countDifferentDigits(987987996))

→ Ссылка