签到与签出
1. 题目地址
https://www.acwing.com/problem/content/1480/
2. 题目解析
这道题的目的是:要从一堆的记录里面,寻找到签到最早的ID和签出最晚的ID。
注意:签到最早和签出最晚未必是同一个人。
3. 题解
1. 对于这道题的输入,我们可以使用三个string类型的变量来接收。分别为:user_id,in_time,out_time。
2. 我们可以声明四个变量:early_id,early_time,late_id,late_time。
3. 在遍历记录的过程中,我们通过比较时间来得出:签到最早的时间及ID和签出最晚的时间及ID。
4. 最后将两个ID输出即可。
在上述的过程中,比较核心的一个问题就是:我们如何比较时间?
由于这道题当中的时间是通过"hh:mm:ss"这样的格式(字符串)来给出。因此,每个时间的位数均相等。如果位数相等的话,我们可以通过字典序来比较各个时间的大小。换句话说,时间的顺序与字典序吻合。
当使用C++的比较运算符来比较字符串时,默认就是按照字典序来进行比较的。
4. 代码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
string early_id = "",early_time = "";
string late_id = "",late_time = "";
int m;
scanf("%d",&m);
for(int i=0;i<m;i++){
string id,in_time,out_time;
cin >> id >> in_time >> out_time;
if(!i || in_time < early_time){
early_id = id;
early_time = in_time;
}
if(!i || out_time > late_time){
late_id = id;
late_time = out_time;
}
}
cout << early_id << " " << late_id;
return 0;
}
作者:gao79138
链接:https://www.acwing.com/
来源:本博客中的截图、代码模板及题目地址均来自于Acwing。其余内容均为作者原创。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现