2 出现的次数

编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数。

  • 输入: 25
    输出: 9
    解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var numberOf2sInRange = function(n) {
if(n < 2) return 0
let high = n / 10 >> 0, cur = n % 10, digit = 1, low = 0 , ans = 0
while(high || cur){
if(cur < 2) ans += high*digit
else if(cur == 2) ans += high*digit + low + 1
else ans += high*digit + digit
low += cur*digit
cur=high%10
high = high/10>>0
digit*=10
}
return ans
};