【华为OD】运维日志排序

chatgpt/2023/9/26 12:38:35

题目描述
运维工程师采集到某产品线网运行一天产生的日志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

思路:将输入的时间缺的0补上,然后使用map存储原日期和格式化后的日期,再对其进行排序

代码:

#include<bits/stdc++.h>
using namespace std;
string s[100000 + 5];bool cmp(const pair<string, string> a, pair<string, string>b) {return a.second < b.second;
}int main() {map<string, string>m;int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> s[i];string xs = s[i];s[i] += '.';int time = 0;string ss;string sum;for (int j = 0; j < s[i].size(); j++) {if (s[i][j] != ':' && s[i][j] != '.') {ss += s[i][j];continue;}if (time == 0) {for (int x = 0; x < 2 - ss.length(); x++) {sum += "0";}sum += ss + ":";}if (time == 1) {for (int x = 0; x < 2 - ss.length(); x++) {sum += "0";}sum += ss + ":";}if (time == 2) {for (int x = 0; x < 2 - ss.length(); x++) {sum += "0";}sum += ss + ":";}if (time == 3) {for (int x = 0; x < 3 - ss.length(); x++) {sum += "0";}sum += ss;}time++;ss.clear();}m[xs] = sum;}vector<pair<string, string>>v(m.begin(), m.end());sort(v.begin(), v.end(), cmp);map<string, string>::iterator it;for (int i = 0; i < v.size(); i++) {cout << v[i].first << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313040.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

产品经理:如何做好项目需求管理

产品经理每天都要接触各种不同的需求&#xff0c;只有对这些需求进行分析&#xff0c;才能更好地了解问题&#xff0c;从而制定相应的解决方案。那么&#xff0c;怎么做需求分析呢&#xff1f; 一、需求确定 选择需求是很重要的&#xff0c;先做出选择&#xff0c;才会有对应的…

Games101学习笔记 - 变换矩阵基础

二维空间下的变换 缩放矩阵 缩放变换: 假如一个点&#xff08;X,Y&#xff09;。x经过n倍缩放&#xff0c;y经过m倍缩放&#xff0c;得到的新点&#xff08;X1&#xff0c;Y1&#xff09;&#xff1b;那么新点和远点有如下关系&#xff0c;X1 n*X, Y1 m*Y写成矩阵就是如下…

Linux vi/vim以及三种模式常用快捷键

vi/vim vi和vimvi 命令模式vi 插入模式vi 底行模式 vi和vim vi 和 vim 都是在 Linux 系统中的文本编辑器。vim 实际上是 vi 的增强版&#xff0c;提供了更多的功能和改进。 vi&#xff1a; vi 是一个经典的文本编辑器&#xff0c;几乎在每个 Linux 发行版中都预装了。vi 的使用…

adb shell使用总结

文章目录 日志记录系统概览adb 使用方式 adb命令日志过滤按照告警等级进行过滤按照tag进行过滤根据告警等级和tag进行联合过滤屏蔽系统和其他App干扰&#xff0c;仅仅关注App自身日志 查看“当前页面”Activity文件传输截屏和录屏安装、卸载App启动activity其他 日志记录系统概…

java - 代码块

代码块 基本介绍 代码块又称为初始化块&#xff0c;属于类中的成员&#xff0c;即类的一部分&#xff0c;和方法类似。将逻辑语句封装在方法体中&#xff0c;通过{}包围起来。 但和方法不同&#xff0c;没有方法名、没有返回、没有参数。只有方法体&#xff0c;而且不用通过…

Sestra 实用教程(三)输入与输出

目 录 一、前言二、分析流程三、输入文件3.1 模型与荷载3.2 分析控制数据 四、输出文件五、参考文献 一、前言 SESAM &#xff08;Super Element Structure Analysis Module&#xff09;是由挪威船级社&#xff08;DNV-GL&#xff09;开发的一款有限元分析&#xff08;FEA&…

C语言---判断当前计算机大小端问题

C语言—判断当前计算机大小端问题 文章目录 C语言---判断当前计算机大小端问题一、方法一二、方法二&#xff1a;使用联合体三、方法二的理解 一、方法一 代码如下 #include<stdio.h> //判断当前机器的大小端问题 int main() {int a 1;//0x 00 00 00 01//低----------…

Spring JPA 实现动态SQL查询及分页

1.在持久层Service中创建EntityManager对象&#xff1b;PersistenceContext private EntityManager entityManager; 2.根据动态sql查询条目数/*** get total.*/ public Object getResultTotalBySql(String sql) {Query query entityManager.createNativeQuery(sql);return que…
推荐文章