【华为OD】C卷真题 200分 :解密犯罪时间 Python代码实现[思路+代码]

  题目描述:

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

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

输入描述:

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

输出描述:

形如HH:SS的字符串,表示推理出来的犯罪时间

示例1输入输出示例仅供调试,后台判题数据一般不包含示例

输入

18:52

输出

18:55

说明

利用数字1, 8, 5, 2构造出来的最近时刻是18:55,是3分钟之后。结果不是18:51因为这个时刻是23小时59分钟之后。

示例2输入输出示例仅供调试,后台判题数据一般不包含示例

输入

23:59

输出

22:22

说明

利用数字2, 3, 5, 9构造出来的最近时刻是22:22。 答案一定是第二天的某一时刻,所以选择可构造的最小时刻为犯罪时间。

备注:

 

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

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

 

     668                                                         
                                                            
              +---+                                                          
  3            |   |       ++                               +       +---|   
  |           |   | 3      +                6               +  |   +   |        +
  |      +     |   |       +         +                      +    |  +   |       +
  |      +    |   +---+    +        +        +++++          +   |  +   |        +
  |      +    | +      |   +   +----+        |   |          +   |  +   |        +
  |      +  3 | +      |   +   +    +      2 |   |     2    +   |  +   |        +
  |      +    | +      |   +   +    +        |   |          +   |  +   |        +
  |      +---+ |     |    |  |    +    ----+   |   +---+    |  |  +   |         +
  |      |     |     |    |  |    +    |       |   |   |    |  |  +   |         +
  |    1 |     |     | 8  |  |    +  1 |   |    | 1 |   | 1 |   |  +   |        +
  |      |     |     |    |  |    +    |   |    |   |   |   |   |  +   |        +
  |  +---+     |     +---+   |    ++---+    ++   +---+   +---+   |  +   |        +
  |  |         |         |   |    |         ++              |   |  |+   |        +
  |0 |         |         | 0 |  0 |         ++              | 0 |  |+   |        +
  |  |         |         |   |    |         ++              |   |  |+   |        +
  +---+         +          +-------+                       +---+| +|+   |        +
                +                                                    +   |        +
    0   1   2   3   4   5   6   7   8   9  10  11  12 + v:    w  u m    u 1 0 2 4
 

题目描述:

        需要注意的是,推导出最近的时间,可以是当天最近或者隔一天最近,就看哪个时间更近

代码实现:

def get_sum(value):
    return '0' + value if len(value) != 2 else value
def process(times):
    data_list = [int(j) for i in times.split(":") for j in i]
    hrs, mins = [i for i in times.split(':')]
    time_sall = [(i * 10 + j) for i in data_list for j in data_list if i <= 5]
    time_sall.sort()
    time_sall = [get_sum(str(i)) for i in time_sall]
    temp = [hrs + ':' + i for i in time_sall if int(i) > int(mins)]
    if len(temp) != 0:
        return ''.join(temp[0])

    if int(hrs) != 23:
        for i in range(len(time_sall)):
            if int(time_sall[i]) > int(hrs):
                return time_sall[i] + ':' + time_sall[0]
    return time_sall[0] + ":" + time_sall[0]

print(process(input()))

7587fb62cfa8459d9e4d88066d23cee1.jpeg

 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-13 04:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-13 04:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-13 04:16:01       82 阅读
  4. Python语言-面向对象

    2024-02-13 04:16:01       91 阅读

热门阅读

  1. 概念和模型

    2024-02-13 04:16:01       46 阅读
  2. 【element-ui】el-table实现跨页多选

    2024-02-13 04:16:01       52 阅读
  3. 1184. 欧拉回路(欧拉回路,模板题)

    2024-02-13 04:16:01       67 阅读
  4. Terraform实战(三)-在AWS上尝试Terraform的Vault Provider

    2024-02-13 04:16:01       54 阅读
  5. 跨站请求伪造 CSRF 漏洞原理以及修复方法

    2024-02-13 04:16:01       52 阅读
  6. Spring Boot整合Elasticsearch实现高效全文搜索

    2024-02-13 04:16:01       49 阅读
  7. 【股票行业统计】 A股概念板块、A股行业分类

    2024-02-13 04:16:01       52 阅读
  8. LeetCode 第384场周赛个人题解

    2024-02-13 04:16:01       63 阅读
  9. php数组

    php数组

    2024-02-13 04:16:01      48 阅读
  10. c++恶魔轮盘制造第1期输赢

    2024-02-13 04:16:01       55 阅读