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;
}
int curr = n, right = 0, result = 0;
while (curr > 0)
{
if (curr%10 > 1)
{
result += (curr/10+1)*pow(10, right);
}
else if (curr%10 == 1)
{
result += (curr/10)*pow(10, right) + n%int(pow(10, right)) + 1;
}
else
{
result += (curr/10)*pow(10, right);
}
curr /= 10;
right++;
}
return result;
}
};