#青训营笔记创作活动#

139 阅读3分钟

题目解析:判断外卖是否超时

在豆包MarsCode AI的题库中,我选择了解析这道判断外卖是否超时的题目。这个问题要求根据顾客点外卖的时间、平台预计送达时间和实际送达时间,来判断外卖是否超时。这既是一个实际问题,也是一个涉及时间处理的编程练习。

思路

  1. 时间转换:为了方便比较,首先将时间从“时:分”的格式转换为分钟表示。这样可以直接进行数值比较,简化了问题。
  2. 跨日处理:考虑到预计送达时间和实际送达时间可能跨越午夜,需要对这种情况进行特殊处理。如果预计送达时间或实际送达时间小于点餐时间,那么这些时间应该加上一天的分钟数(24小时*60分钟)进行转换。
  3. 超时判断:最后,比较预计送达时间和实际送达时间。如果实际送达时间大于预计送达时间,则判定为超时。

图解

  • 可以画一个时间线,标记出点餐时间、预计送达时间和实际送达时间的位置。
  • 如果实际送达时间在预计送达时间的右侧,表示超时;否则,表示未超时。

代码详解: 示例:

public static String solution(String t1, String t2, String t3) {
        // write code here
        String[]time1=t1.split(":");
        String[]time2=t2.split(":");
        String[]time3=t3.split(":");
        int end1=0;
        int end2=0,end3=0;
        end1+=Integer.parseInt(time1[0])*60+Integer.parseInt(time1[1]);
            end2+=Integer.parseInt(time2[0])*60+Integer.parseInt(time2[1]);
            end3+=Integer.parseInt(time3[0])*60+Integer.parseInt(time3[1]);
            if (end2<end1) {
                end2+=24*60;
            }
            if (end3<end1) {
                end3+=24*60;
            }
        if (end2>=end3) {
            return "No";
        }else
        return "Yes";
    }
  • 首先,使用split方法将时间字符串分割成小时和分钟部分。
  • 然后,将这些部分转换为整数,并计算总分钟数。
  • 对于跨日的情况,通过比较时间点,对预计送达时间和实际送达时间进行必要的调整。
  • 最后,根据调整后的时间进行比较,输出是否超时的结果。

知识总结

在解决这个问题的过程中,我复习并实践了以下几点知识:

  • 字符串处理:使用split方法分割字符串,提取有用信息。
  • 条件判断:通过条件语句处理时间的跨日问题。
  • 类型转换:将字符串转换为整数进行计算。

对于初学者,建议多练习字符串处理和条件判断,这是编程中非常基础且重要的技能。

学习计划

结合豆包MarsCode AI的刷题功能,我制定了以下学习计划:

  1. 定期刷题:每周至少完成5道编程练习题,逐步提升难度。
  2. 错题回顾:对于做错的题目,及时回顾并总结错误原因,避免再犯。
  3. 知识点巩固:针对做题中遇到的新知识点,及时查阅资料,加深理解。

工具运用

豆包MarsCode AI不仅提供了丰富的题库,还有详细的解题思路和代码示例。为了更高效地学习,我会:

  • 利用AI的解题提示来拓展解题思路。
  • 对比自己的代码和AI提供的示例代码,找出可以改进的地方。
  • 结合在线编程社区,与其他学习者交流心得,共同进步。

综上所述,通过结合豆包MarsCode AI的刷题功能和其他学习资源,我相信能够更有效地提升自己的编程能力。