【编程题目 |100分】运维日志排序【2022 Q2考试题】
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,
编码后请点击”保存并调试“按钮进行代码提交。
■ 题目描述
运维工程师采集到某产品线网运行一天产生的日志n条
现需根据日志时间先后顺序对日志进行排序
日志时间格式为H:M:S.N
H表示小时(0~23)
M表示分钟(0~59)
S表示秒(0~59)
N表示毫秒(0~999)
时间可能并没有补全
也就是说
01:01:01.001也可能表示为1:1:1.1
输入描述
- 第一行输入一个整数n表示日志条数,1<=n<=100000
- 接下来n行输入n个时间
输出描述
- 按时间升序排序之后的时间
- 如果有两个时间表示的时间相同
- 则保持输入顺序
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
2
01:41:8.9
1:1:09.211
输出
1:1:09.211
01:41:8.9
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
23:41:08.023
1:1:09.211
08:01:22.0
输出
1:1:09.211
08:01:22.0
23:41:08.023
示例3 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
2
22:41:08.023
22:41:08.23
输出
22:41:08.023
22:41:08.23
注:时间相同保持输入顺序
C++
#include <bits/stdc++.h> using namespace std; constexpr int trans = 60; int transform(vector<int> &nums) { int res = 0; res += nums[0] * pow(trans, 2) * 1000; res += nums[1] * trans * 1000; res += nums[2] * 1000; res += nums[3]; return res; }
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看JAVA
import java.util.*; public class LoggerSort { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String nStr = sc.nextLine(); int n = Integer.parseInt(nStr); Map<Integer, List<String>> map1 = new HashMap<>();
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看JavaScript
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python解法一
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python解法二
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python解法三
import re import functools n = int(input()) res = []
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python
N = 2 ListStr = ["01:41:08.009", "1:1:09.211"] N = 2 ListStr = ["22:41:08.023", "22:41:08.23"] N = 3 ListStr = ["23:41:08.023", "1:1:09.211", "08:01:22.0"] import re from operator import itemgetter
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看