添加回复
无
给出一组数字,找到本组数字组不成的最小正整数。。大菜B的代码。。。。。。。
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
String S = scan.nextLine();
scan.close();
combine(S);
}
public static void combine(String s) {
int base = 1;
char[] array = s.toCharArray();
int[] arr = new int[array.length];
for (int i = 0; i < array.length; i++) {
arr[i] = array[i] - '0';
}
Arrays.sort(arr);
boolean fail = false;
while (!fail) {
if (base < 10) {
int t=base;
for (int i = 0; i < arr.length; i++) {
if (base == arr[i]) {
base++;
}
}
if(t==base)
fail=true;
}
else {
int bit = (int) (Math.log10(base) + 1);
boolean isEqual = true;
HashMap<Integer,Boolean> map=new HashMap<>();
for(int a:arr) {
map.put(a, false);
}
String itoa=base+"";
for (int k =bit-1; k>=0; k--) {
int tmp=Integer.valueOf(itoa.charAt(k)-'0');
boolean level=false;
for(Entry<Integer,Boolean> m:map.entrySet()) {
if(m.getKey()==tmp&&!m.getValue())
{
m.setValue(true);
level=true;
break;
}
}
if(!level)
isEqual=false;
}
if (isEqual)
base++;
else
fail=true;
}
}
System.out.print(base);
}
}