【编程题目 |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%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

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%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法一


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法二


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法三


import re
import functools

n = int(input())
res = []

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


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%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看