Skip to content

Commit ac87e35

Browse files
authored
Update 233-number-of-digit-one.js
1 parent b7ed6ef commit ac87e35

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

233-number-of-digit-one.js

+28
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,31 @@ const countDigitOne = function (n) {
3737
return ones
3838
}
3939

40+
// another
41+
42+
/**
43+
* @param {number} n
44+
* @return {number}
45+
*/
46+
const countDigitOne = function(n) {
47+
let res = 0, factor = 1, lower = 0, cur = 0, higher = 0
48+
while(~~(n / factor) !== 0) {
49+
lower = n - (~~(n / factor)) * factor
50+
cur = (~~(n / factor)) % 10
51+
higher = ~~(n / (factor * 10))
52+
switch(cur) {
53+
case 0:
54+
res += higher * factor
55+
break
56+
case 1:
57+
res += higher * factor + lower + 1
58+
break
59+
default:
60+
res += (higher + 1) * factor
61+
break
62+
}
63+
factor *= 10
64+
}
65+
66+
return res
67+
};

0 commit comments

Comments
 (0)