给你两个字符串 startTime
和 finishTime
,均符合 "HH:MM"
格式,分别表示你 进入 和 退出 游戏的确切时间,请计算在整个游戏会话期间,你完成的 完整对局的对局数 。
如果 finishTime
早于 startTime
,这表示你玩了个通宵(也就是从 startTime
到午夜,再从午夜到 finishTime
)。
• 例如,如果 startTime = "05:20"
且 finishTime = "05:59"
,这意味着你仅仅完成从 05:30
到 05:45
这一个完整对局。而你没有完成从 05:15
到 05:30
的完整对局,因为你是在对局开始后进入的游戏;同时,你也没有完成从 05:45
到 06:00
的完整对局,因为你是在对局结束前退出的游戏。
假设你是从 startTime
进入游戏,并在 finishTime
退出游戏,请计算并返回你完成的 完整对局的对局数 。
思路如图:
代码实现:
var numberOfRounds = function(loginTime, logoutTime) {
let loginTimeArr = loginTime.split(':');
// let login = loginTimeArr[0]*60+Math.ceil(loginTimeArr[1]/15)*15;
// 字符串加数字会拼接起来
// let login = loginTimeArr[0]*60+loginTimeArr[1]
let login = loginTimeArr[0]*60+Number(loginTimeArr[1])
let logoutTimeArr = logoutTime.split(':');
let logout = logoutTimeArr[0]*60+Number(logoutTimeArr[1])
if(logout<login){
logout+=24*60;
}
login = login-loginTimeArr[1] + Math.ceil(loginTimeArr[1]/15)*15;
logout = logout-logoutTimeArr[1] + Math.floor(logoutTimeArr[1]/15)*15;
return (logout-login)/15>0?(logout-login)/15:0;
// 遗漏掉了一种情况 就是 一个向上取整,一个向下取整,然后logout< login
// "00:47" "00:57" 应该先比较后对时间进行处理
};