题解 | #整数中1出现的次数(从1到n整数中1出现的次数)#
整数中1出现的次数(从1到n整数中1出现的次数)
http://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6
借鉴了牛客 WosAlan的思路,感谢提供思路
此外要注意base要从1开始,每次*10,不要超过n。
class Solution { public: int NumberOf1Between1AndN_Solution(int n) { if(n==0){ return 0; } //从个位数开始 int base = 1; //出现0的个数 int res = 0; while(base <= n){ int cur = n/base%10; int a = n/base/10; int b = n%base; if(cur==0){ res += a*base; }else if(cur==1){ res += 1*(b+1); res += a*base; }else{ res += (a+1)*base; } base *=10; } return res; } };
剑指Offer 文章被收录于专栏
剑指offer的解析结合