1. 程式人生 > >數字便歷的方法及應用

數字便歷的方法及應用

利用數字的遍歷來進行的操作
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來控制數字所在的位置,並要進行討論。