您的位置:首页 > 其它

233. Number of Digit One

2017-10-17 09:52 316 查看
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 < 1) return 0;
long long  base = 1;
long long  cnt = 0;
while(n >= base){
int r = n / (base * 10);
int c = n % (base * 10) / base;

if(c == 0){
cnt += r * base;
} else if(c == 1){
cnt += r * base + n % (base * 10) % base + 1;
} else if(c > 1){
cnt += (r + 1) * base;
}
base *= 10;
}
return cnt;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: