233. Number of Digit One
- Total Accepted: 25467
- Total Submissions: 93576
- Difficulty: Hard
- Contributors: Admin
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.
class Solution
{
public:
int countDigitOne(int n)
{
if(n==0)
return 0;
if(n>0&&n<10)
return 1;
int nn=n;
int count=0;
while(nn/10)
{
nn/=10;
count++;
}
int ans1,ans2,ans3;
if(nn>1)
ans1=pow(10,count);
else if(nn==1)
ans1=n%(int)pow(10,count)+1;
ans2=nn*(count)*pow(10,count-1);
ans3=countDigitOne(n%(int)pow(10,count));
return ans1+ans2+ans3;
}
};