描述
给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。
输入
输入由多组测试数据组成。第一行输入一个整数t,表示测试数据的组数。
接下来的t行,每行输入一个数。
输出
输出有t行,每行依次对应一组测试数据的运算结果。
示例输入
3
11000000
222222222
333333333
示例输出
12010101
230101010
340101010
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
int arr[] = new int[count];
for(int i = 0;i<count;i++){
arr[i] = sc.nextInt();
//调用getNum打印期望数
getNum(arr[i]+1); //保证比原数大
}
}
//判断是否有相邻位数相等
public static boolean noRepeat(int n){
String str = n +""; //将n转为字符串
for(int i = 0;i<str.length()-1;i++){ //String.charAt(n) 取字符串n位的值
if(str.charAt(i)==str.charAt(i+1)){ //判断字符串的当前位与下一位是否相等
return false;
}
}
return true;
}
//穷举
public static void getNum(int n){
while(true){
if(noRepeat(n)){ //当为不重复数时 打印并返回
System.out.println(n);
return;
}
n++;
}
}
}