class Solution { public String largestTimeFromDigits(int[] A) { List digits =Arrays.stream(A).boxed().collect(Collectors.toList()); List permutations = new ArrayList(); permutations = permute(digits,0,permutations); int result = -1; for (Integer i: permutations){ if(i % 100 < 60 && i / 100 < 24 && i > result){ result = i; } } return result == -1? "" : "" + String.format("%02d",result / 100) + ":" + String.format("%02d",result % 100); } List permute(List arr, int k, List result){ for(int i = k; i < arr.size(); i++){ java.util.Collections.swap(arr, i, k); permute(arr, k+1, result); java.util.Collections.swap(arr, k, i); } if (k == arr.size() -1){ result.add(Integer.parseInt(""+arr.get(0) + arr.get(1) + arr.get(2) + arr.get(3))); } return result; } }