Skip to content

Instantly share code, notes, and snippets.

@fakruboss
Created June 21, 2021 13:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fakruboss/e4fd83ce131cd23a198cc2d49ff264f5 to your computer and use it in GitHub Desktop.
Save fakruboss/e4fd83ce131cd23a198cc2d49ff264f5 to your computer and use it in GitHub Desktop.
class Solution {
private int getStartMinuteRoundUp(int min) {
if (min % 15 == 0) return min;
if (min > 0 && min < 15) return 15;
if (min > 15 && min < 30) return 30;
if (min > 30 && min < 45) return 45;
return 0;
}
private int getFinishMinuteRoundUp(int min) {
if (min % 15 == 0) return min;
if (min > 0 && min < 15) return 0;
if (min > 15 && min < 30) return 15;
if (min > 30 && min < 45) return 30;
return 45;
}
private boolean isNextHour(int min) {
String minute = String.valueOf(min);
if (minute.length() == 1) return false;
if (minute.length() == 2) return minute.charAt(0) == '6';
if (minute.length() == 3) return minute.charAt(1) == '6';
else return minute.charAt(2) == '6';
}
public int numberOfRounds(String startTime, String finishTime) {
String[] s = startTime.split(":");
String[] f = finishTime.split(":");
int start = 0, finish = 0;
int startHour = Integer.parseInt(s[0]);
int startMinute = Integer.parseInt(s[1]);
int finishHour = Integer.parseInt(f[0]);
int finishMinute = Integer.parseInt(f[1]);
if ((startHour * 100 + startMinute) > ((finishHour * 100) + finishMinute)) finish += 2400;
int mStartMinute = getStartMinuteRoundUp(Integer.parseInt(s[1]));
if (mStartMinute != startMinute) {
startMinute = mStartMinute;
startHour = mStartMinute == 0 ? startHour + 1 : startHour;
}
int mFinishMinute = getFinishMinuteRoundUp(Integer.parseInt(f[1]));
if (mFinishMinute != finishMinute) {
finishMinute = mFinishMinute;
}
start = startHour * 100 + startMinute;
finish += (finishHour * 100 + finishMinute);
int numOfRounds = 0;
while (start < finish) {
++numOfRounds;
start += 15;
if (isNextHour(start)) {
start = ((start / 100) + 1) * 100;
}
}
return numOfRounds;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment