-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMaximumTime.java
More file actions
42 lines (29 loc) · 1.01 KB
/
MaximumTime.java
File metadata and controls
42 lines (29 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package edu.buffalo.liveramp;
public class MaximumTime {
String maxString="";
public String maxTime(int[] nums){
backtrack("",nums,new boolean[nums.length]);
return maxString.equalsIgnoreCase("") ? "Not Possible" : (maxString.substring(0, 2)+":"+maxString.substring(2));
}
public void backtrack(String tempStr ,int[] nums,boolean[] used){
if(tempStr.length()==nums.length){
if(!(tempStr.substring(0,2).compareTo("23")>0
|| tempStr.substring(2,4).compareTo("59")>0)){
if(tempStr.compareTo(maxString)>0)
maxString=tempStr;
}
}
for(int i=0;i<nums.length;i++){
if(used[i] || (i>0 && nums[i]==nums[i-1] && !used[i-1])) continue;
used[i]=true;
tempStr=tempStr+nums[i];
backtrack(tempStr,nums,used);
used[i]=false;
tempStr=tempStr.substring(0,tempStr.length()-1);
}
}
public static void main(String[] args) {
MaximumTime mt = new MaximumTime();
System.out.println(mt.maxTime(new int[]{9,2,1,9}));
}
}