標籤:華為機試 整數逆序並去重 整數逆序
輸入一個整數,如12336544,或1750,然後從最後一位開始倒過來輸出,最後如果是0,則不輸出,輸出的數字是不帶重複數位,所以上面的輸出是456321和571。如果是負數,比如輸入-175,輸出-571。
#include <iostream>#include <string>using namespace std;//逆序char * revs(char *s){int j = strlen(s)-1; int i=0;char t;while(i<j){t = s[i];s[i++]=s[j];s[j--]=t;}return s;}void process(const char *pInputStr, long lInputLen, char *pOutputStr) { bool flag[10] = {0}; int j = 0;int flag_0=0; for(int i = 0;i < lInputLen;i++) { if(flag[pInputStr[i] - '0'] == 0)//pInputStr[i]第一次出現. { if(pInputStr[i] - '0'==0 && flag_0==0);else{flag_0=1;pOutputStr[j++] = pInputStr[i]; flag[pInputStr[i] - '0'] = 1; } } } pOutputStr[j]='\0';for(i=0;i<j;i++)cout<<pOutputStr[i];cout<<endl<<endl;} int main(){char *input=new char[100];char *output=new char[100];char *s=new char[100];char *ss;int k=0;while(cin>>input){k=0;if(input[0]=='-'){cout<<"-";for(int i=1;i<strlen(input);i++)s[k++]=input[i];s[k]='\0';ss=revs(s);process(ss,strlen(ss),output);}else{ss=revs(input);process(ss,strlen(ss),output);}}delete input;delete output;delete s;return 0;}
華為機試—整數逆序並去重