1 class Solution
2 {
3 public:
4 int count(int n, int x)
5 {
6 int cnt = 0, k;
7 for (int i = 1; k = n / i; i *= 10)
8 {
9 int high = k / 10;
10 if (x == 0)
11 {
12 if (high)
13 {
14 high--;
15 }
16 else
17 {
18 break;
19 }
20 }
21 cnt += high * i;
22 int cur = k % 10;
23 if (cur > x)
24 {
25 cnt += i;
26 }
27 else if (cur == x)
28 {
29 cnt += n - k * i + 1;
30 }
31 }
32 return cnt;
33 }
34 int digitsCount(int d, int low, int high)
35 {
36 return count(high,d)-count(low-1,d);
37 }
38 };
参考:http://www.it610.com/article/4964533.htm