Next Closest Time
Thoughts
Code
class Solution {
public String nextClosestTime(String time) {
int start = Integer.parseInt(time.substring(0, 2)) * 60 + Integer.parseInt(time.substring(3));
int[] nums = new int[4], res = new int[4];
for (int i = 0, j = 0; i < time.length(); ++i) {
if (time.charAt(i) == ':') {
continue;
}
nums[j++] = time.charAt(i) - '0';
}
int m = Integer.MAX_VALUE;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
int hour = nums[i] * 10 + nums[j];
if (hour > 23) {
continue;
}
for (int p = 0; p < 4; ++p) {
for (int q = 0; q < 4; ++q) {
int min = nums[p] * 10 + nums[q];
if (min > 59) {
continue;
}
int now = hour * 60 + min;
int diff = now > start ? now - start : now + 24 * 60 - start;
if (diff < m) {
m = diff;
res[0] = nums[i];
res[1] = nums[j];
res[2] = nums[p];
res[3] = nums[q];
}
}
}
}
}
return res[0] + "" + res[1] + ":" + res[2] + "" + res[3];
}
}Analysis
Last updated