/*
查找最大的不重复数
l 问题描述
如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。
例如, 105 、 1234 和 12121 都是“不重复数”,而 11 、 100 和
1225 不是。给定一个正整数 A ,返回大于 A 的最小“不重复数”。
A 小于 100000
l 要求实现函数
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;
}
}
华为:查找最大的不重复数
最新推荐文章于 2024-04-06 12:44:08 发布