Recently, I took an example on the task of finding the earliest valid digital 24 hr format time that can be possible with given 6 digits, and if not possible to return empty.
example , 1 8 3 2 6 4
12:36:48
I have written the code, but it fails with too much time taken to run the tests. Yes, I agree my code filled with complete if else statements, not at all good, is their any good solution for this?
My code :
public String solution(int A, int B, int C, int D, int E, int F) {
List<Integer> nums = new ArrayList<>();
nums.add(A);
nums.add(B);
nums.add(C);
nums.add(D);
nums.add(E);
nums.add(F);
String earlyTime = "NOT POSSIBLE";
Collections.sort(nums);
if(nums.get(0)==0 && nums.get(1)==0 && nums.get(2)==0){
earlyTime = nums.get(0)+""+nums.get(3)+":"+nums.get(1)+""+nums.get(4)+":"+nums.get(2)+""+nums.get(5);
}
else if(nums.get(0) <= 2 && nums.get(0) > -1){
if(nums.get(1) <=3 && nums.get(1) > -1){
if(nums.get(2) <= 5 && nums.get(2) > -1){
if(nums.get(3) <= 9 && nums.get(3) > -1){
if(nums.get(4) <= 5 && nums.get(4) > -1){
if(nums.get(5) <= 9 && nums.get(5) > -1){
earlyTime = nums.get(0)+""+nums.get(1)+":"+nums.get(2)+""+nums.get(3)+":"+nums.get(4)+""+nums.get(5);
}
}
else if(nums.get(4) > 5){
int tmp = nums.get(3);
nums.set(3, nums.get(4));
nums.set(4, tmp);
if(Integer.parseInt(nums.get(4)+""+nums.get(5)) < 59 && Integer.parseInt(nums.get(4)+""+nums.get(5)) > -1){
earlyTime = nums.get(0)+""+nums.get(1)+":"+nums.get(2)+""+nums.get(3)+":"+nums.get(4)+""+nums.get(5);
}
}
}
}
}
}else{
return "NOT POSSIBLE";
}
return earlyTime;
}