技术开发 频道

返回不重复数的实现

  【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);

  }

  调用一下getNext(),很简单,就不写了。

查看原文

0
相关文章