华为:查找最大的不重复数

来源:互联网 发布:软件开发人员工资标准 编辑:程序博客网 时间:2024/05/18 02:35
/*查找最大的不重复数l 问题描述如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如, 105 、 1234 和 12121 都是“不重复数”,而 11 、 100 和1225 不是。给定一个正整数 A ,返回大于 A 的最小“不重复数”。A 小于 100000l 要求实现函数unsigned int GetNotRepeatNum(unsigned int lValue)【输入】 lValue : 给定的数字,返回大于该值的最小不重复数【输出】 无【返回】大于 iValue 的最小不重复数l 示例输入: iValue =54返回: 56输入: iValue =10返回: 12输入: iValue =98返回: 101输入: iValue =21099返回: 21201*/#include<iostream>using namespace std;bool compare(int m){    int flag=1,i=0;    unsigned  int a[5]={0};    do    {        a[i]=m%10;        i++;    }while(m/=10);//while(m/10);经典错误    for(int j=0;j<i;j++)        for(int k=1;k<i;k++)            if(a[k]==a[k-1])            flag=0;    return flag;}unsigned int GetNotRepeatNum(unsigned int lValue){    if(lValue>100000)return 0;    unsigned  int i=lValue+1;    while(compare(i)==0)        i++;    return i;}int main(){    int a;    cin>>a;    while(a)    {        cout<<"GetNotRepeatNum="<<GetNotRepeatNum(a)<<endl;        cin>>a;    }}