出题:输入一个整数N,求从1到N这N个整数的十进制表示中‘1’出现的次数;
分析:
- 从左向右处理string表示的数字;当前数字长度为n,判断最左边一位数字字符;
- 如果是0,则直接递归下一位;
- 如果是1,则计数有两个来源,一个是n位数数字(实际就是除去最高位之后的数字大小,加上1,当其余位全部为0的时候),另一个是n-1,n-2,……,1位数字,使用SpecialPower可以计算;
- 如果是其他数字,则计数有两个来源,一个是n,n-1,n-2,……,1位数字,使用SpecialPower可以计算,另一个是去除最高位之后的数字大小;
解题:
1 int NonRecursiveStrInt(char *target) { 2 int sum=0; 3 char *index=target; 4 5 while(*index != '