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

写文案要看的网站定制化开发

写文案要看的网站,定制化开发,wordpress优惠码,数据交易网站开发题目描述 运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。 • H表示小时(0~23) • M表示分钟(0~59) • S表示秒(0~59) • N表示毫秒(0~999) 时间可能并没有补全,也就是说…

题目描述

运维工程师采集到某产品线网运行一天产生的日志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个时间。

输出描述
按时间升序排序之后的时间,如果有两个时间表示的时间相同,则保持输入顺序。

用例

输入

2
01:41:8.9
1:1:09.211

输出

1:1:09.211

01:41:8.9

说明
输入

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

说明
输入

2
22:41:08.023
22:41:08.23

输出

22:41:08.023

22:41:08.23

说明两个时间表示的时间相同,保持输入顺序

时间日志排序算法详解

核心解题思路

本题目要求对格式为H:M:S.N的时间日志进行排序,其中时间可能没有补全(如1:1:1.1表示01:01:01.100)。解题的核心思路如下:

  1. 时间格式解析:将非标准化时间字符串分解为小时、分钟、秒和毫秒四个部分
  2. 单位统一转换:将所有时间单位转换为毫秒以便比较
  3. 稳定排序:在排序过程中,对于时间相同的条目保持原始输入顺序
  4. 结果输出:输出原始时间字符串(不改变其格式)

关键点说明

  • 补全规则:对于毫秒部分,如果位数不足3位,需要在右侧补零(如110001010
  • 排序稳定性:使用稳定排序算法,确保时间相同时保持输入顺序
  • 高效处理:采用O(n log n)的排序算法处理最多100,000条日志

完整代码实现

def main():n = int(input().strip())times = [input().strip() for _ in range(n)]# 存储(总毫秒数,原始字符串)的元组parsed_times = []for time_str in times:# 分割小时、分钟和秒/毫秒部分parts = time_str.split(':')hour = int(parts[0])minute = int(parts[1])# 处理秒和毫秒if '.' in parts[2]:sec_str, ms_str = parts[2].split('.', 1)  # 只分割一次sec = int(sec_str)# 毫秒处理:截取前3位并右侧补零ms_str = ms_str[:3].ljust(3, '0')ms = int(ms_str)else:sec = int(parts[2])ms = 0# 计算总毫秒数total_ms = (hour * 3600 + minute * 60 + sec) * 1000 + msparsed_times.append((total_ms, time_str))# 稳定排序(时间相同的保持输入顺序)parsed_times.sort(key=lambda x: x[0])# 输出结果for _, time_str in parsed_times:print(time_str)if __name__ == "__main__":main()

算法原理解析

1. 时间解析

parts = time_str.split(':')
hour = int(parts[0])
minute = int(parts[1])
  • 使用冒号分割字符串获取小时和分钟
  • 直接转换为整数(自动处理前导零)

2. 秒和毫秒处理

if '.' in parts[2]:sec_str, ms_str = parts[2].split('.', 1)ms_str = ms_str[:3].ljust(3, '0')ms = int(ms_str)
  • 检查秒部分是否包含小数点(表示有毫秒)
  • 分割秒和毫秒部分
  • 关键操作:毫秒字符串右侧补零至3位(如990009090
  • 转换为整数的毫秒值

3. 毫秒转换公式

total_ms = (hour * 3600 + minute * 60 + sec) * 1000 + ms
  • 1小时 = 3600秒 = 3,600,000毫秒
  • 1分钟 = 60秒 = 60,000毫秒
  • 1秒 = 1,000毫秒
  • 公式汇总:(小时×3600 + 分钟×60 + 秒)×1000 + 毫秒

4. 稳定排序

parsed_times.sort(key=lambda x: x[0])
  • 使用Python的TimSort(稳定排序算法)
  • 仅比较总毫秒数,时间相同时保持原始顺序
  • 时间复杂度O(n log n),满足100,000条日志的处理需求

示例解析

示例1:输入2\n01:41:8.9\n1:1:09.211

  1. 解析第一条01:41:8.9

    • 小时=1, 分钟=41, 秒=8, 毫秒=900(9900
    • 总毫秒 = (1×3600 + 41×60 + 8)×1000 + 900 = 6,068,900
  2. 解析第二条1:1:09.211

    • 小时=1, 分钟=1, 秒=9, 毫秒=211
    • 总毫秒 = (1×3600 + 1×60 + 9)×1000 + 211 = 3,669,211
  3. 排序结果:3,669,211 < 6,068,900 → 先输出第二条

    1:1:09.211
    01:41:8.9
    

示例2:输入3\n23:41:08.023\n1:1:09.211\n08:01:22.0

  1. 解析

    • 1:1:09.211 → 3,669,211
    • 08:01:22.0 → (8×3600 + 1×60 + 22)×1000 + 0 = 28,882,000
    • 23:41:08.023 → (23×3600 + 41×60 + 8)×1000 + 23 = 85,268,023
  2. 排序结果

    1:1:09.211
    08:01:22.0
    23:41:08.023
    

示例3:输入2\n22:41:08.023\n22:41:08.23

  1. 解析

    • 22:41:08.023 → 毫秒=023 → 23
    • 22:41:08.23 → 毫秒=23 → 230(右侧补零)
    • 总毫秒差:23 < 230
  2. 排序结果(时间相同保持顺序,但实际23≠230):

    22:41:08.023
    22:41:08.23
    

总结与拓展

关键知识点

  1. 时间格式处理:分割字符串和类型转换
  2. 单位转换:时间单位间的换算关系
  3. 稳定排序:保持相等元素的原始顺序
  4. 边界处理:毫秒补零规则

拓展思考

  1. 更复杂的时间格式:如何支持年-月-日 时:分:秒.毫秒格式?
  2. 多时区处理:如何对不同时区的时间进行排序?
  3. 性能优化:对于超大数据集(>1,000,000条),如何优化?
  4. 错误处理:如何检测并处理非法时间格式?

本解法通过以下步骤高效解决问题:

  1. 解析非标准时间字符串
  2. 统一转换为毫秒比较
  3. 稳定排序保持原始顺序
  4. 输出原始格式结果

初学者可从中学习:

  1. 字符串分割和处理技巧
  2. 时间单位换算方法
  3. 稳定排序的实现和应用
  4. 边界情况的处理策略

核心启示:将复杂格式的数据转换为统一可比较的数值,是解决排序问题的通用思路。


文章转载自:

http://S6JCXRkY.ctwwq.cn
http://BWqvsUgn.ctwwq.cn
http://89bkRU8B.ctwwq.cn
http://hx5ZCiK7.ctwwq.cn
http://XDfHlzRq.ctwwq.cn
http://febITlQa.ctwwq.cn
http://SG5fAZZr.ctwwq.cn
http://dcyQKVwv.ctwwq.cn
http://YroBRhBG.ctwwq.cn
http://n7RY08h6.ctwwq.cn
http://YS9ajz45.ctwwq.cn
http://wterPc3Z.ctwwq.cn
http://rnrR32Ay.ctwwq.cn
http://7xJWxUt6.ctwwq.cn
http://sYtF94B3.ctwwq.cn
http://eDKB5mAW.ctwwq.cn
http://PlZZXHnD.ctwwq.cn
http://6NXEmFaF.ctwwq.cn
http://9Xn3WNpW.ctwwq.cn
http://UPXYvlnK.ctwwq.cn
http://7EHSNhQt.ctwwq.cn
http://qI4vU4yX.ctwwq.cn
http://GKr4uXzx.ctwwq.cn
http://MgUwePuD.ctwwq.cn
http://klZqDMuT.ctwwq.cn
http://JU0qSni0.ctwwq.cn
http://H4KWtnVA.ctwwq.cn
http://U6ldX0m6.ctwwq.cn
http://IBjK3C2f.ctwwq.cn
http://pcp1egXQ.ctwwq.cn
http://www.dtcms.com/wzjs/626107.html

相关文章:

  • 网站建设服务合同书标准版微信做单网站有哪些
  • 网站建设及网络推广设立公司流程以及需要的资料
  • 优化关键词可以选择哪个工具seo sem培训
  • 优秀网站介绍wordpress get_row
  • 国内网站空间购买相城区公司网站建设
  • 织梦网站修改教程视频教程江苏seo百度推广
  • 桓台网站设计做招聘求职网站
  • 网站投票系统怎么做一个人看的视频在线观看动漫
  • 国内设计师个人网站建筑公司大全
  • 网站建设需要购买什么黄埔建网站公司
  • 建设一个网站需要什么技术人员评论优化
  • wap网站什么意思WordPress自己写主题
  • 开发公司组织机构图外汇网站怎么做优化
  • 公司门户网站的意义宝安电子厂做高端网站
  • 中山网站制作套餐如何进行网页设计和网站制作
  • 网站首页关键词优化织梦网站模板更换
  • 男人和女人做不可描述的事情的网站百色高端网站建设
  • 网站备案初审加强学校网站建设的要求
  • 营销型网站具备的二大能力可以做直播卖产品的网站
  • 各大网站网址白塔网站建设
  • 嘉峪关建设路小学网站word 添加 wordpress
  • 怎么做网站 ppt学校网站设计方案模板
  • 审计实务网站建设论文网站建设是什么语言
  • 网站设计两边为什么要留白做外贸仿牌网站
  • 网站的颜色手机做任务的网站有哪些内容
  • 济南哪个网站建设最好动画制作专业就业前景
  • 微信公众号怎么做网站链接网站开发联系人国强
  • iis默认网站建设中宁波网站建设方案推广
  • 西安网站排名公司网络广告营销论文
  • 南京做网站yuanmus宝塔wordpress伪静态