【华为机试】2023年真题B卷(python)-解密犯罪时间

一、题目

题目描述:

警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 "HH:MM" 表示的时刻。

根据警察和线人的约定,为了隐蔽,该时间是修改过的,解密规则为:

利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。

每个出现数字都可以被无限次使用。

二、输入输出

输入描述:

形如HH:SS字符串,表示原始输入。
输出描述:

形如HH:SS的字符串,表示推理处理的犯罪时间。

备注:

1.可以保证现任给定的字符串一定是合法的。

例如,"01:35"和"11:08"是合法的,"1:35"和"11:8"是不合法的。

2.最近的时刻可能在第二天。

三、示例

示例

20:12得到20:20

23:59得到22:22

12:58得到15:11

18:52得到18:55

23:52得到23:53

09:17得到09:19

07:08得到08:00

四、要求

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

五、解题思路

  1. 将输入的时间字符串转换为整数表示的小时和分钟。
  2. 将小时和分钟的每一位数字添加到一个集合中,表示可以使用的数字。
  3. 从当前分钟开始,每分钟增加1,如果增加后的分钟数的每一位数字都在集合中,那么这就是下一个可能的犯罪时间。
  4. 如果分钟数增加到60,那么小时数增加1,分钟数归0。如果小时数增加到24,那么小时数归0。
  5. 将找到的小时和分钟转换为字符串格式并返回。

六、参考代码

python 复制代码
# -*- coding: utf-8 -*-
'''
@File    :   2023-B-解密犯罪时间.py
@Time    :   2023/12/30 00:25:01
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict

def next_time(time):
    # 将输入的时间字符串转换为整数表示的小时和分钟
    hour, minute = map(int, time.split(':'))
    # 将小时和分钟的每一位数字添加到一个集合中
    digits = set(time.replace(':', ''))
    while True:
        # 每分钟增加1
        minute += 1
        # 如果分钟数增加到60,那么小时数增加1,分钟数归0
        if minute == 60:
            minute = 0
            hour += 1
            # 如果小时数增加到24,那么小时数归0
            if hour == 24:
                hour = 0
        # 将小时和分钟转换为字符串格式
        time = f'{hour:02d}:{minute:02d}'
        # 如果增加后的小时和分钟的每一位数字都在集合中,那么这就是下一个可能的犯罪时间
        if set(time.replace(':', '')) <= digits:
            return time

time = input()
result = next_time(time)
print(result)
相关推荐
小徐敲java13 分钟前
python使用opcua的订阅和mqtt
开发语言·python
Lisonseekpan38 分钟前
雪花算法(Snowflake)技术详解与实战应用
java·分布式·后端·算法
夫唯不争,故无尤也1 小时前
梯度累计原理:数学可行性与PyTorch实现
人工智能·pytorch·python
软件算法开发1 小时前
基于秃鹰搜索优化的LSTM深度学习网络模型(BES-LSTM)的一维时间序列预测算法matlab仿真
深度学习·算法·matlab·lstm·时间序列预测·秃鹰搜索优化·bes-lstm
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 27--二次封装方法--优化断言结果
python·学习·测试工具·pytest
2401_877274241 小时前
太原理工大学2025数据结构-栈和队列
数据结构·c++·算法
love530love1 小时前
解决 ComfyUI 启动显示 ‘sox‘ 命令未找到错误:从安装到配置的完整指南
人工智能·windows·python·aigc·comfyui·comfyui-manager
资深web全栈开发1 小时前
LeetCode 1262. 可被三整除的最大和 - 解题思路与代码
算法·leetcode·职场和发展
J***79392 小时前
Python在机器学习中的数据处理
开发语言·python·机器学习