统计数字,解法
题目:计算数字k在0到n中的出现的次数,k可能是0~9的一个值
思路:
看到这个题目的时候其实就想到了,要判断从0~n 里没个数的每一位都是否和k相等。
具体做法就是循环到每个数然后一直对10取余,取到每一位的数字然后计数。
但是第一次提交还是做错了,代码如下:
1 class Solution { 2 public: 3 /* 4 * @param : An integer 5 * @param : An integer 6 * @return: An integer denote the count of digit k in 1..n 7 */ 8 int digitCounts(int k, int n) { 9 int total = 0; 10 for(int i =0;i<=n;i++) 11 { 12 int temp = i; 13 while(temp>0) 14 { 15 if(temp==k) 16 { 17 total++; 18 } 19 temp=temp/10; 20 } 21 } 22 return total; 23 } 24 };
原因是忘了考虑k为0的情况,导致while循环可能会进不去。修改为do-while后测试通过:
class Solution { public: /* * @param : An integer * @param : An integer * @return: An integer denote the count of digit k in 1..n */ int digitCounts(int k, int n) { int total = 0; for(int i =0;i<=n;i++) { int temp = i; do{ if(temp==k) { total++; } temp=temp/10; }while(temp>0); } return total; // write your code here } };