题目解析:判断外卖是否超时
在豆包MarsCode AI的题库中,我选择了解析这道判断外卖是否超时的题目。这个问题要求根据顾客点外卖的时间、平台预计送达时间和实际送达时间,来判断外卖是否超时。这既是一个实际问题,也是一个涉及时间处理的编程练习。
思路:
- 时间转换:为了方便比较,首先将时间从“时:分”的格式转换为分钟表示。这样可以直接进行数值比较,简化了问题。
- 跨日处理:考虑到预计送达时间和实际送达时间可能跨越午夜,需要对这种情况进行特殊处理。如果预计送达时间或实际送达时间小于点餐时间,那么这些时间应该加上一天的分钟数(24小时*60分钟)进行转换。
- 超时判断:最后,比较预计送达时间和实际送达时间。如果实际送达时间大于预计送达时间,则判定为超时。
图解:
- 可以画一个时间线,标记出点餐时间、预计送达时间和实际送达时间的位置。
- 如果实际送达时间在预计送达时间的右侧,表示超时;否则,表示未超时。
代码详解: 示例:
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的刷题功能,我制定了以下学习计划:
- 定期刷题:每周至少完成5道编程练习题,逐步提升难度。
- 错题回顾:对于做错的题目,及时回顾并总结错误原因,避免再犯。
- 知识点巩固:针对做题中遇到的新知识点,及时查阅资料,加深理解。
工具运用
豆包MarsCode AI不仅提供了丰富的题库,还有详细的解题思路和代码示例。为了更高效地学习,我会:
- 利用AI的解题提示来拓展解题思路。
- 对比自己的代码和AI提供的示例代码,找出可以改进的地方。
- 结合在线编程社区,与其他学习者交流心得,共同进步。
综上所述,通过结合豆包MarsCode AI的刷题功能和其他学习资源,我相信能够更有效地提升自己的编程能力。