警察在侦破一个案件时,得到了线人给出的

题目: 警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。根据警察和线人的约定,为了隐蔽,该时间是修改过的,解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。每个出现数字都可以被无限次使用。" 输入描述:形如HH:SS的字符串,表示原始输入 输出:形如HH:SS的字符串,表示推理出来的犯罪时间 输入

18:52

输出

18:55

说明

利用数字1, 8, 5, 2构造出来的最近时刻是18:55,是3分钟之后。结果不是18:51因为这个时刻是18小时52分钟之后。 示例2 输入 23:59 输出 22:22 说明 利用数字2, 3, 5, 9构造出来的最近时刻是22:22。 答案一定是第二天的某一时刻,所以选择可构造的最小时刻为犯罪时间。
from itertools import product

def valid_combinations(input_str):
    digits, original_number, valid_numbers, index = [int(item) for item in input_str if item != ':'], input_str.replace(":", ""), '', 0
    digits.sort()
    for perm in product(digits, repeat=4):
        num_str = ''.join(map(str, perm))
        if int(num_str[:2]) <= 23 and int(num_str[-2:]) <= 59:
            if index == 0 or int(num_str) > int(original_number):
                valid_numbers = num_str
                if index != 0:
                    break
        index += 1
    return valid_numbers

if __name__ == '__main__':
    res = valid_combinations(&quot;20:12&quot;)
    data = res[0:2] + &quot;:&quot; + res[2:4]
    print(data)
全部评论

相关推荐

都送什么礼物吗?如果送的话,价格大概都是多少?辛苦大家给个参考啦!
牛客73617529...:要送就送那种没必要买又很贵的,假设一个打瓦的显示屏 鼠标 键盘都很贵,你送这些突出不了价值,直接送一个很贵的鼠标垫包记住你的。
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务