I have a question regarding time complexity (big O notation) for Java software. Is there a way to quickly calculate or test it (or any website that could calculate it for m
I might be solving someone's homework, but the question was begging for a sane solution...
Counting distinct digits in a number requires no strings, sets or regular expressions, just some simple arithmetics.
The following method runs in O(n) time (n = number of digits in the input) and constant space:
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;
}
Making this work for negative numbers is left as an exericse to the reader ;)