BingWay原创作品,转载请注明作者和出处。 

如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、164和198都是“不重复数”,而11、100和122不是。
下面用一个long类型( long类型数字A),实现返回大于A的最小“不重复数”。

 1       static long gNext(long A)
 2       {
 3             long n = A;
 4             int[] a = new int[100];
 5             int cnt = 0;//输入数的位数
 6             while (n > 0)
 7             {
 8                 a[cnt++= (int)(n % 10);
 9                 n /= 10;//输入几位数执行几遍
10             }
11             long tmp = 0;//存放临时值
12             for (int j = cnt-1; j >= 0; j--)//循环取值
13             {
14                 tmp = tmp * 10 + a[j];//按高位取值
15                 if (a[j] == a[j + 1])//比较两个数是否相等
16                 {
17                     tmp = tmp + 1;//比较结果相等则加1
18                 }
19            
20             }
21             if (cnt > 2||tmp>90)////输入位数大于两位执行
22             {
23                cnt=1;
24                 for (int i = cnt; i > 0; i--)
25                 {
26                     if (a[i] == a[i - 1])//比较两个数是否相等
27                     {
28                         tmp = tmp + 1;
29                     }
30                 }
31             }
32             return tmp;
33         }
34         static long getNext(long A)
35         {
36             return gNext(A + 1);
37         }
调用一下getNext(),很简单,就不写了。
主函数入口

相关文章:

  • 2022-03-03
  • 2021-05-25
  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-24
  • 2022-02-26
  • 2021-05-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
相关资源
相似解决方案