【IT168 技术】如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、164和198都是“不重复数”,而11、100和122不是。
下面用一个long类型( long类型数字A),实现返回大于A的最小“不重复数”。
static long gNext(long A)
{
long n = A;
int[] a = new int[100];
int cnt = 0;//输入数的位数
while (n > 0)
{
a[cnt++] = (int)(n % 10);
n /= 10;//输入几位数执行几遍
}
long tmp = 0;//存放临时值
for (int j = cnt-1; j >= 0; j--)//循环取值
{
tmp = tmp * 10 + a[j];//按高位取值
if (a[j] == a[j + 1])//比较两个数是否相等
{
tmp = tmp + 1;//比较结果相等则加1
}
}
if (cnt > 2)////输入位数大于两位执行
{
cnt=1;
for (int i = cnt; i > 0; i--)
{
if (a[i] == a[i - 1])//比较两个数是否相等
{
tmp = tmp + 1;
}
}
}
return tmp;
}
static long getNext(long A)
{
return gNext(A + 1);
}
{
long n = A;
int[] a = new int[100];
int cnt = 0;//输入数的位数
while (n > 0)
{
a[cnt++] = (int)(n % 10);
n /= 10;//输入几位数执行几遍
}
long tmp = 0;//存放临时值
for (int j = cnt-1; j >= 0; j--)//循环取值
{
tmp = tmp * 10 + a[j];//按高位取值
if (a[j] == a[j + 1])//比较两个数是否相等
{
tmp = tmp + 1;//比较结果相等则加1
}
}
if (cnt > 2)////输入位数大于两位执行
{
cnt=1;
for (int i = cnt; i > 0; i--)
{
if (a[i] == a[i - 1])//比较两个数是否相等
{
tmp = tmp + 1;
}
}
}
return tmp;
}
static long getNext(long A)
{
return gNext(A + 1);
}
调用一下getNext(),很简单,就不写了。