import itertools
def next_closest_time(time: str) -> str:
# 将时间字符串按 ":" 分割,分别得到小时和分钟
hour, minute = time.split(":")
digits = list(hour + minute) # 获取所有数字字符
current_time_in_minutes = int(hour) * 60 + int(minute) # 当前时间转化为分钟
# 生成所有数字的排列
possible_times = set() # 用set去重,避免重复的排列
for perm in itertools.product(digits, repeat=4): # 生成四位数字的排列
perm_hour = int(''.join(perm[:2])) # 前两位为小时
perm_minute = int(''.join(perm[2:])) # 后两位为分钟
if perm_hour < 24 and perm_minute < 60:
# 如果小时和分钟都在合法范围内
possible_times.add((perm_hour, perm_minute))
# 找到距离当前时间最近的时间
closest_time = None
min_diff = float('inf')
for perm_hour, perm_minute in possible_times:
# 计算时间差
time_in_minutes = perm_hour * 60 + perm_minute
diff = time_in_minutes - current_time_in_minutes
# 如果时间差为负值,意味着这是第二天的时间
if diff <= 0:
diff += 24 * 60
if diff < min_diff:
min_diff = diff
closest_time = (perm_hour, perm_minute)
# 返回结果格式化成 "HH:MM" 格式
return f"{closest_time[0]:02}:{closest_time[1]:02}"
# 测试用例
time = input("请输入当前时间(HH:MM):")
print(next_closest_time(time))
Tags:difftime