Возможно, я решаю чье-то домашнее задание, но вопрос заключается в том, чтобы найти разумное решение ...
Подсчет различных цифр в номере не требует никаких строк, наборов или регулярных выражений, просто некоторая простая арифметика.
Следующий метод выполняется за время O (n) (n = количество цифр на входе) и в постоянном пространстве:
int distinctDigits(int num) {
if (num == 0) {
return 1;
}
boolean[] digits = new boolean[10];
while (num > 0) {
digits[num % 10] = true;
num /= 10;
}
int count = 0;
for (boolean digit : digits) {
if (digit) {
count++;
}
}
return count;
}
Выполнение этой работы для отрицательных чисел оставляется в качестве упражнения длячитатель;)