Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.
For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.
代码如下:
public class Solution {
public int countDigitOne(int n) {
if(n<=0)
return 0;
int j=1,k=n,constant=0;
while(k>=10){
k/=10;
j*=10;
}
if(k>1){
constant=j;
}else{
constant=n%j+1;
}
return constant+k*countDigitOne(j-1)+countDigitOne(n%j);
}
}
运行结果:
(*medium)LeetCode 233.Number of Digit One
原文:http://www.cnblogs.com/mlz-2019/p/4703007.html