Skip to content

Commit 22e2e74

Browse files
add NumberOfDigits
1 parent 2bd49e4 commit 22e2e74

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

Maths/NumberOfDigits.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package Maths;
2+
3+
/**
4+
* Find the number of digits in a number.
5+
*/
6+
public class NumberOfDigits {
7+
public static void main(String[] args) {
8+
int[] numbers = {0, 12, 123, 1234, -12345, 123456, 1234567, 12345678, 123456789};
9+
for (int i = 0; i < numbers.length; ++i) {
10+
assert numberOfDigits(numbers[i]) == i + 1;
11+
assert numberOfDigitsFast(numbers[i]) == i + 1;
12+
assert numberOfDigitsFaster(numbers[i]) == i + 1;
13+
assert numberOfDigitsRecursion(numbers[i]) == i + 1;
14+
}
15+
}
16+
17+
/**
18+
* Find the number of digits in a number.
19+
*
20+
* @param number number to find
21+
* @return number of digits of given number
22+
*/
23+
private static int numberOfDigits(int number) {
24+
int digits = 0;
25+
do {
26+
digits++;
27+
number /= 10;
28+
} while (number != 0);
29+
return digits;
30+
}
31+
32+
/**
33+
* Find the number of digits in a number fast version.
34+
*
35+
* @param number number to find
36+
* @return number of digits of given number
37+
*/
38+
private static int numberOfDigitsFast(int number) {
39+
return number == 0 ? 1 : (int) Math.floor(Math.log10(Math.abs(number)) + 1);
40+
}
41+
42+
43+
/**
44+
* Find the number of digits in a number faster version.
45+
*
46+
* @param number number to find
47+
* @return number of digits of given number
48+
*/
49+
private static int numberOfDigitsFaster(int number) {
50+
return number < 0 ? (-number + "").length() : (number + "").length();
51+
}
52+
53+
/**
54+
* Find the number of digits in a number using recursion.
55+
*
56+
* @param number number to find
57+
* @return number of digits of given number
58+
*/
59+
private static int numberOfDigitsRecursion(int number) {
60+
return number / 10 == 0 ? 1 : 1 + numberOfDigitsRecursion(number / 10);
61+
}
62+
}

0 commit comments

Comments
 (0)