警察在侦破一个案件时,得到了线人给出的
题目: 警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “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("20:12")
data = res[0:2] + ":" + res[2:4]
print(data)
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("20:12")
data = res[0:2] + ":" + res[2:4]
print(data)
全部评论
相关推荐
07-29 16:41
上海大学 产品经理 
点赞 评论 收藏
分享

点赞 评论 收藏
分享