HUAWEI OD マシンテスト - 犯罪時刻の解読

 質問の説明

警察が事件を解決する際、情報提供者から与えられた犯行可能時間を「HH:MM」の形式で与えられます。

警察と情報提供者の合意により、今回はそれを隠すために変更された。

解読ルールは、これまでに出現した数字を使用して現在時刻に最も近い次の瞬間を構築し、その時刻が犯罪の可能性のある時刻であるというものです。

出現する各数字は無制限に使用できます。

説明を入力してください

元の入力を表す HH:SS 形式の文字列。

出力の説明

推論処理の犯罪時刻を示す HH:SS 形式の文字列。

述べる

1. 指定された文字列が正当であることが保証されます。

たとえば、「01:35」と「11:08」は合法ですが、「1:35」と「11:8」は違法です。

2. 最も近い瞬間は翌日かもしれません。

例1

20:12得到20:20

23:59得到22:22

12:58得到15:11

18:52得到18:55

23:52得到23:53

09:17得到09:19

07:08得到08:00

コード

# coding:utf-8
# 解密犯罪时间
import sys

try:
    while True:
        time = sys.stdin.readline().replace(":", "").strip()
        tmp = list(map(int, list(time)))
        HH = str(tmp[0]) + str(tmp[1])
        MM = str(tmp[2]) + str(tmp[3])
        ans = [HH, MM]
        print(f'tmp:{tmp}, HH:{ans[0]}, MM:{ans[1]}')
        ss = []
        for i in tmp:
            for j in tmp:
                s = str(i) + str(j)
                if s not in ss:
                    ss.append(s)
        ss.sort()
        flag = False
        for m in ss:
            if int(ans[1]) < int(m) < 60:
                ans[1] = m
                flag = True
                break
        if not flag:
            for h in ss:
                if int(ans[0]) < int(h) < 24:
                    ans[0] = h
                    ans[1] = min(ss)
                    flag = True
                    break
        if flag:
            print(f'Time:{ans[0]}:{ans[1]}')
        else:
            ans[0] = min(ss)
            ans[1] = min(ss)
            print(f'Time:{ans[0]}:{ans[1]}')

except:
    pass

おすすめ

転載: blog.csdn.net/SD_JZZ/article/details/132666591