【华为机试】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)
相关推荐
LuckyTHP1 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
Trent19851 小时前
影楼精修-肤色统一算法解析
图像处理·人工智能·算法·计算机视觉
feifeigo1231 小时前
高光谱遥感图像处理之数据分类的fcm算法
图像处理·算法·分类
北上ing2 小时前
算法练习:19.JZ29 顺时针打印矩阵
算法·leetcode·矩阵
mahuifa2 小时前
(7)python开发经验
python·qt·pyside6·开发经验
周胡杰3 小时前
组件导航 (HMRouter)+flutter项目搭建-混合开发+分栏效果
前端·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
.格子衫.4 小时前
真题卷001——算法备赛
算法
学地理的小胖砸4 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
安迪小宝4 小时前
6 任务路由与负载均衡
运维·python·celery
XiaoyaoCarter4 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树