不重复数

来源:互联网 发布:淘宝钻石展位多少钱 编辑:程序博客网 时间:2024/05/23 16:55

题目:给定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(); }}}

原创粉丝点击