不重复数

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 07:58   395   0

题目:给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。

输入:输入由多组测试数据组成。第一行输入一个整数n,表示测试数据的组数。接下来的n行,每行输入一个数。

输出:输出有n行,每行依次对应一组测试数据的运算结果。

java代码实现如下:

import java.util.Scanner;

public class NoRepeatNumber {
 public static void main(String[] args) {
   Scanner scan=new Scanner(System.in);
   int count=scan.nextInt();
   int[] arr=new int[count];
   for(int i=0;i<arr.length;i++){
    int num=input();
    arr[i]=getMinNum(num);
   }
   for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
   }

 }
 
 //获得最小的数,采用穷举法
 private static int getMinNum(int num){
  for(num+=1;;num++){
   if(noRepeat(num)){
    return num;
   }
  }
 }
 
 //判断是否为不重复数
 private static boolean  noRepeat(int num){
    boolean flag=true;
    String str=num+"";                   //转化为字符串来比较
    for(int i=0;i<str.length()-1;i++){
     if(str.charAt(i)==str.charAt(i+1)){
      flag=false;
     }
    }
    return flag;
 }
 
 //输入的是两位数及以上的数
 private static int input(){
   Scanner scan=new Scanner(System.in);
   int number=scan.nextInt();
   if(number>9){
    return number;
   }else{
    return input();
   }
 }

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP