剑指Offer_31

题目

求出1-13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1-13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

解题思路

这题可以使用数学知识解出,目前看不大懂,先贴个链接点击跳转

暴力解法:

遍历1-n,利用 x % 10,x / 10 的方法求解可得。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
int cnt = 0;
for(int i = 1; i <= n; ++i){
int x = i;
while(x != 0){
if(x % 10 == 1){
++cnt;
}
x /= 10;
}
}
return cnt;
}
}