提取不重複的整數

qzh_1234發表於2020-12-05

題目描述

輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。

輸入描述

輸入一個int型整數

輸出描述

按照從右向左的閱讀順序,返回一個不含重複數字的新的整數

示例

輸入:9876673
輸出:37689

思路

對於輸入整數n,迴圈採用n%10和n/10可以獲得該整數的每一位的數字,本題的關鍵在於去除重複數字並且不改變數字的順序。具體方法為:藉助長度為10的全零整型陣列進行去重工作,由於數字是由0~9這9個數字組成,從右開始若該數字出現則將該數字位置上的元素置1,並將該數字儲存下來,×10操作可以保證數字逆序。這種方法沒有將末尾為0的整數考慮進去,因此若輸入整數的末尾為0,則首先輸出0,再利用上述方法提取不重複整數。

#include <iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int arr[10]={0}; //由於該整數由0~9構成 
        int result=0;
        while(n!=0){
            if(result==0 && n%10==0){
                cout<<(n%10);
            }
            if(arr[n%10]==0){ //保證每個數字僅出現一次
                arr[n%10]=1;
                result=result*10+n%10;
            }
            n=n/10;
        }
        cout<<result<<endl;
    }
    return 0;
}

相關文章