首页 > 代码库 > 华为机试—整数逆序并去重
华为机试—整数逆序并去重
输入一个整数,如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; }
华为机试—整数逆序并去重
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。