剑指 Offer 43. 1~n整数中1出现的次数
难度中等70
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
示例 1:
输入:n = 12 输出:5
示例 2:
输入:n = 13 输出:6
public int countDigitOne(int n) {
int res = 0;
for(long m = 1 ; m<=n ;m*=10){
long a = n/m, b = n % m;
res+=(a+8)/10*m+(a%10 == 1 ? b+1:0);
}
return res;
}