利用数字的遍历来进行的操作
1、统计数字个数
2、数的反转
一、数字的统计
class Solution {
public:
/*
* param k : As description.
* param n : As description.
* return: How many k's between 0 and n.
*/
int digitCounts(int k, int n) {
// write your code here
int count = 0;
for (int i = 0; i <= n; i++)
{
int temp = i;
while (temp / 10) //多位数的处理
{
if (temp % 10 == k)
{
count++;
}
temp = temp / 10;
}
if (temp == k) // 一位数的处理
count++;
}
return count;
}
};
这个算法的实现,我是参考了网上代码的。
这个主要是通过一些操作,来得到该数值得各个数字,并进行统计。
一个数a 若要求其每一位上的数字。需要进行如下操作:
1,a%10 .对10取余得到的是个位数的数字。
2、a=a/10
3、重复1,2。
4、以此类推 直至 a为个位数 也就是a%10==0 时,停止操作,遍历结束
5、如果需要统计数字个数,可以设置变量计数变量count。
二、数的反转
class Solution {
public:
/**
* @param number: A 3-digit number.
* @return: Reversed number.
*/
int reverseInteger(int number) {
// write your code here
int result=0;
cout<<"请输入一个大于等于100小于1000的数:"<<endl;
cin>>number;
int temp=number;
while(temp/10){
for(int i=3;i>0;i--){
if(i==3){
result+=(temp%10)*100;
temp=temp/10;
}
if(i==2){
result+=(temp%10)*10;
temp=temp/10;
}if(i==1){
result+=temp;
}
}
temp=temp/10;
}
return result;
}
};
在该算法中遍历得到每位数字后,需要将位置调换。在执行的操作上,需要用一个变量n来控制数字所在的位置,并要进行讨论。