题解 | #日志排序# 带注释版

日志排序

https://www.nowcoder.com/practice/0f64518fea254c0187ccf0ea05019672

#include <bits/stdc++.h>
using namespace std;

// 定义一个结构体用来存储记录信息
struct record {
    string name;       // 记录中的人名
    string startDay;   // 开始日期
    string startTime;  // 开始时间
    double costTime;   // 持续时间,以某种单位(可能是小时)表示
    string line;       // 原始输入字符串
};

// 比较函数,用于确定两个记录的排序规则
bool cmp(record r1, record r2) {
    // 首先比较持续时间
    if (r1.costTime != r2.costTime) return r1.costTime < r2.costTime;
    else {
        // 如果持续时间相同,则比较开始日期
        if (r1.startDay != r2.startDay) return r1.startDay < r2.startDay;
        // 如果开始日期也相同,则比较开始时间
        else return r1.startTime < r2.startTime;
    }
}

int main() {
    record r[10000]; // 声明一个记录数组,用来存储最多10000条记录
    int i = 0;
    string s;
    // 循环读取输入直到EOF
    while (getline(cin, s)) {
        r[i].line = s; // 将整行文本存储在line字段中
        istringstream lineStream(s); // 使用istringstream从字符串中提取数据
        // 将提取的数据存储到相应的字段
        lineStream >> r[i].name >> r[i].startDay >> r[i].startTime >> r[i].costTime;
        i++;
    }

    // 对记录数组进行排序,根据定义的比较函数
    sort(r, r + i, cmp);

    // 输出排序后的每条记录的原始行
    for (int j = 0; j < i; j++) {
        cout << r[j].line << endl;
    }
}

#算法#
全部评论

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务