数字便历的方法及应用

利用数字的遍历来进行的操作
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来控制数字所在的位置,并要进行讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值