题目: 警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。根据警察和线人的约定,为了隐蔽,该时间是修改过的,解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。每个出现数字都可以被无限次使用。&quot; 输入描述:形如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 productdef valid_combinations(input_str):digits, original_number, valid_numbers, index = [int(item) for item in input_str if item != ':'], input_str.replace(&quot;:&quot;, &quot;&quot;), '', 0digits.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_strif index != 0:breakindex += 1return valid_numbersif __name__ == '__main__':res = valid_combinations(&quot;20:12&quot;)data = res[0:2] + &quot;:&quot; + res[2:4]print(data)