AI刷题|外卖超时判断

130 阅读3分钟

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"。

最开始没有考虑隔天里的实际到达时间早于预计送达的情况,测试用例无法通过,完整的测试用例情况应该有以下:

  1. 实际送达时间在同一天且早于预计送达时间。
  2. 实际送达时间在同一天且晚于预计送达时间。
  3. 实际送达时间在第二天且早于预计送达时间(跨天情况)。
  4. 实际送达时间在第二天且晚于预计送达时间(跨天情况)。
  5. 实际送达时间正好等于预计送达时间。
  6. 预计送达时间和实际送达时间都是午夜的情况。
  7. 预计送达时间是午夜,而实际送达时间是前一天的午夜。
  8. 预计送达时间是前一天的午夜,而实际送达时间是午夜。
    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"