AI刷题|外卖超时判断
问题描述
小C点了一个外卖,并且急切地等待着骑手的送达。她想知道她的外卖是否超时了。
已知小C在时刻 t1 点了外卖,外卖平台上显示的预计送达时间为 t2,而实际送达时间为 t3。需要判断外卖是否超时。如果外卖超时,则输出 "Yes";否则输出 "No"。
t3 在 t2 之后则认定为超时。
实际送达时间与预计送达时间在 2 小时之内
测试样例
示例 1:
输入:
t1 = "18:00", t2 = "19:05", t3 = "19:05"
输出:"No"
示例 2:
输入:
t1 = "23:00", t2 = "00:21", t3 = "00:23"
输出:"Yes"
示例 3:
输入:
t1 = "23:05", t2 = "00:05", t3 = "23:58"
输出:"No"
代码如下:
time_to_minutes 函数用于接受时间字符串 time_str 作为参数,该字符串格式为 "HH:MM",即小时和分钟。将时间字符串分割为小时和分钟后将它们转化为整数。
solution 函数使用 time_to_minutes 函数将这些时间字符串转换为午夜开始的分钟数。
如果预计送达时间 t2 在预定时间 t1 之前,或者实际送达时间 t3 在预定时间 t1 之前,它会将这些时间增加一天的分钟数(24小时 * 60分钟),以处理跨日的情况。
最后比较实际送达时间 t3 和预计送达时间 t2,如果 t3 大于 t2,则表示订单超时,返回"Yes";否则,返回"No"。
最开始没有考虑隔天里的实际到达时间早于预计送达的情况,测试用例无法通过,完整的测试用例情况应该有以下:
- 实际送达时间在同一天且早于预计送达时间。
- 实际送达时间在同一天且晚于预计送达时间。
- 实际送达时间在第二天且早于预计送达时间(跨天情况)。
- 实际送达时间在第二天且晚于预计送达时间(跨天情况)。
- 实际送达时间正好等于预计送达时间。
- 预计送达时间和实际送达时间都是午夜的情况。
- 预计送达时间是午夜,而实际送达时间是前一天的午夜。
- 预计送达时间是前一天的午夜,而实际送达时间是午夜。
def time_to_minutes(time_str):
# 将时间字符串转换为午夜开始的分钟数
h, m = map(int, time_str.split(':'))
return h * 60 + m
def solution(t1: str, t2: str, t3: str) -> str:
# 将时间字符串转换为分钟
t1_minutes = time_to_minutes(t1)
t2_minutes = time_to_minutes(t2)
t3_minutes = time_to_minutes(t3)
处理跨天的情况
if t2_minutes < t1_minutes:
t2_minutes += 24 * 60 # 如果预计时间在t1的前面,增加一天的分钟数
if t3_minutes < t1_minutes:
t3_minutes += 24 * 60 # 如果实际送达时间在t1的前面,增加一天的分钟数
# 判断是否超时
if t3_minutes > t2_minutes:
return "Yes"
else:
return "No"