给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,
测试代码:
测试结果就不贴了,有兴趣的朋友可以试试。
例如1101是重复数,1231是不重复数。
分析:
从这个正整数+1开始,往后取整数转换为字符串,进行判断,如果相邻2个都不相等,那就是我们要找的数了。
实现代码如下:
//给定任意一个正整数,求比这个数大且最小的“不重复数”“不重复数”的含义是相邻两位不相同,
//例如1101是重复数,1231是不重复数。
int GetMinNum(int nNum)
{
char Temp[20];
int nLen;
for (int i = nNum+1; ;i++)
{
itoa(i, Temp, 10);
nLen = strlen(Temp);
for (int j=0; j<nLen-1; j++)
{
//有重复,跳出循环。
if (Temp[j]==Temp[j+1])
{
break;
}
}
//没有重复,返回i。
if (j==nLen-1)
{
return i;
}
}
return 0;
}
测试代码:
int main()
{
int nTemp;
int nRet;
while(1)
{
scanf("%d", &nTemp);
if (nTemp==9999)
{
break;
}
else
{
nRet = GetMinNum(nTemp);
cout << nRet << endl;
}
}
return 0;
}
测试结果就不贴了,有兴趣的朋友可以试试。
此题性能优化算法见:
整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12178719