python【解密犯罪时间】警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如“HH:MM”表示的时刻。

警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如“HH:MM”表示的时刻。

根据警察和线人的约定,为了隐蔽,该时间时修改过的,解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。

每个出现数字都可以被无限次使用。

输入描述:

形如HH:SS字符串,表示原始输入

输出描述:

形如HH:SS的字符串,表示推理处理啊的犯罪时间。

备注:

1.可以保证现任给定的字符串一定是合法的。例如,“01:35”和“11:08”是合法的,“1:35”和“11:8”是不合法的。

2.最近的时刻可能在第二天。

示例1:    14:45    14:51   14:54    23:50    23:53    23:55    23::52

输入

18:52

输出

18:55

def decrypt_crime_time(s):
    nums_list = [int(i) for i in s if i != ":"]
    H, M = [int(i) for i in s.split(":")]
    # ['11', '10', '15', '13', '01', '00', '05', '03', '51', '50', '55', '53', '31', '30', '35', '33']
    time = []
    for i in nums_list:
        for j in nums_list:
            time.append(str(i) + str(j))
    print(time)
    # 存放分钟
    time1=[]
    # 存放小时
    time2=[]
    # 处理当天的数据,只要更新分钟
    for i in range(len(time)):
        if int(time[i]) > M and int(time[i]) <= 59: #  大于当前分钟的
            time1.append(time[i])

    if len(time1)>0:
        time1.sort()
        # 需要更新分钟  小时不变,分钟取大于最接近M的值
        if H < 10: # 如果小时是一位数,需要在返回前面补充0
            return '0'+str(H) +":"+ time1[0]
        else:
            return  str(H) + ":" + time1[0]
    else:
        # 需要更新小时  小时需要更新,分钟取最小
        for i in range(len(time)):
            if int(time[i]) > H  and int(time[i]) <=23 :
                time2.append(time[i])
        if len(time2)>0:
            time2.sort()
            return str(time2[0]) +":"+ str(min(time))
        # 需要更新第二天的时间  小时取最小,分钟取最小
        else:
            return str(min(time)) + ":" + str(min(time))

s = "23:33"
print(decrypt_crime_time(s))

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值