题目:给定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();
}
}
}
本文介绍了一种算法,用于找出比给定正整数大的最小的“不重复数”。不重复数指该数中不存在相同的相邻数字。文章提供了一个Java实现示例,通过逐个检查大于给定数的所有整数,找到第一个符合条件的不重复数。
6165

被折叠的 条评论
为什么被折叠?



