ANDROID端的第二题。。第一题TLE。。GG
发布于 2018-03-22 21:56 1722 次浏览 0 赞 来自 试题交流  

  给出一组数字,找到本组数字组不成的最小正整数。。大菜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);

}


}


1 条回复

兄弟,假如我输入的是12345678910,你这个输出的是11啊....

2018-03-22 21:59
添加回复
回到顶部