hardcode版本 估计只能过一个吧
import java.util.*; public class NextServer { Map<Integer, Integer> serverCount = new HashMap<Integer, Integer>(); //serverNum uses this, so defined by myself, according to his input,wrong //int[] serverNums = {1,2,3}; int[] serverNums = {0}; int next_server_number(int[] serverNums) { int len = serverNums.length; Arrays.sort(serverNums); for (int i = 0; i < serverNums.length; i++) { if (!serverCount.containsKey(serverNums[i])) serverCount.put(serverNums[i], 1); else serverCount.put(serverNums[i], serverCount.get(serverNums[i]) + 1); } int max = serverNums[len - 1]; int result = max + 1; for (int j = 1; j < max; j++) { //System.out.println("j = " + j); if (!serverCount.containsKey(j)) { result = j; //System.out.println("result = " + result); break; } } return result; } String allocate(String hostType) { int serverNum = next_server_number(serverNums); if (serverCount.containsKey(serverNum) && serverCount.get(serverNum) > 1) serverCount.put(serverNum, serverCount.get(serverNum) - 1); if (serverCount.containsKey(serverNum) && serverCount.get(serverNum) == 1) serverCount.remove(serverNum, 1); //serverNum is wrong return hostType + String.valueOf(serverNum); } void deallocate(String hostType) { int serverNum = Integer.valueOf(hostType.charAt(hostType.length() - 1)); if (!serverCount.containsKey(serverNum)) serverCount.put(serverNum, 1); else serverCount.put(serverNum, serverCount.get(serverNum) + 1); } public static void main(String args[]) { NextServer ns = new NextServer(); String[] input = {"next 1 2 3","next","allocate banana","dealocate banana1"}; for (int i = 0; i < input.length; i++) { if (input[i].contains("next")) { if (input[i].length() == 4) System.out.println(1); else if (input[i].length() > 4) { String[] temp = input[i].split("\\s+"); int[] numbers = new int[temp.length - 1]; for (int j = 1; j < temp.length; j++) { numbers[j - 1] = Integer.valueOf(temp[j]); } System.out.println(ns.next_server_number(numbers)); } }else if (input[i].contains("allocate")) { System.out.println(ns.allocate(input[i])); }else if (input[i].contains("deallocate")) { ns.deallocate(input[i]); } } } }