当前位置: 首页 > news >正文

【华为OD】运维日志排序

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

相关文章:

  • Mag-Fluo-4 AM,镁离子荧光探针,是一种有用的细胞内镁离子指示剂
  • 与 ChatGPT 进行有效交互的几种策略
  • 华为云安装MySQL后,本地工具连接MySQL失败
  • Flink On Yarn模式部署与验证
  • [数据库]对数据库事务进行总结
  • 【Lua学习笔记】Lua进阶——Table(2)
  • 如何进行软件回归测试
  • php://filter绕过死亡exit
  • RS485/RS232自由转ETHERNET/IP网关profinet和ethernet区别
  • Hadoop_HDFS_常见的文件组织格式与压缩格式
  • 算法与数据结构(四)--排序算法
  • 【C/C++】C++11 在各编译器版本支持详情
  • flutter开发实战-图片保存到相册
  • 数据结构---栈
  • 【RabbitMQ】golang客户端教程1——HelloWorld
  • 计算机图形学笔记2-Viewing 观测
  • Redis - 三大缓存问题(穿透、击穿、雪崩)
  • web自动化测试-PageObject 设计模式
  • golang json.Marshal() 结构体、map 携带 符号 转成 “\u0026“
  • 【设计模式|行为型】备忘录模式(Memento Pattern)
  • Redis与其他缓存解决方案(如Memcached)的区别是什么?
  • 《面试1v1》Kafka的ack机制
  • 基于双 STM32+FPGA 的桌面数控车床控制系统设计
  • ES-5-进阶
  • Java面试准备篇:全面了解面试流程与常见问题
  • Go语言进阶语法八万字详解,通俗易懂
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)
  • Kotlin Multiplatform 使用 CocoaPods 创建多平台分发库
  • 前端食堂技术周刊第 92 期:VueConf 2023、TypeChat、向量数据库、Nuxt 服务器组件指南
  • 用C语言构建一个手写数字识别神经网络