【问题标题】:what are the best possible ways to find the next earliest possible time from given HH:MM 24 hour format从给定的 HH:MM 24 小时格式中找到下一个最早可能时间的最佳方法是什么
【发布时间】:2018-11-25 15:42:43
【问题描述】:

stackoverflow 上有类似类型的问题 但是从 24 小时格式 HH:MM 中,找到下一个最早时间的最佳方法是什么 如果给出 12:00,则 ans 为 21:00

【问题讨论】:

  • 你的问题不清楚。 00:12 到 12:00 的“下一个最早时间”如何?为什么不是01:20?请更清楚地解释您要做什么。提供多个示例。

标签: arrays algorithm sorting combinations time-format


【解决方案1】:

我想我会根据原始时间(这里是 12:00)的数字生成所有可能的时间,对它们进行排序,看看哪个在原始时间之后。

更详细:生成数字的所有唯一排列。如果您不知道如何生成排列,请在网上搜索,它在很多地方都有介绍。生成所有排列然后过滤掉重复可能是最简单的。验证每个排列并丢弃那些不是有效时间的排列(如果有)。例如,没有 12:63 或 31:14 这样的时间。如果使用 Java,请使用 LocalTime.parse 进行验证。使用自然顺序对时间进行排序。在排序列表中找到原件。返回后续列表元素。

编辑:以下描述在所有情况下都不会为您提供正确的下次。

可以更直接地只查找下一次而不查找所有时间,但这有点复杂。要做的第一件事是从右侧搜索时间字符串,以查找在较大数字之前存在较小数字的位置(在您的示例中,您会发现 1 在 2 之前)。在到目前为止访问的数字中,选择比找到的较小数字高的下一个数字。在您的示例中,下一个高于 1 的数字是 2。将此数字放在较低数字所在的位置,然后颠倒其余数字的顺序。 100 的倒数是 001,所以你的结果是 20:01,我相信这是正确的答案。再举一个不同的例子,01:20,1 又在 2 之前,所以把 2 放在那里,把 10 倒转成 01 得到 02:01。如果您获得无效时间,请重复该过程。如果在更大的数字之前没有更小的数字,那么您已经用尽了一天中可能的时间。如果要重新开始,请将整个字符串反转:从 21:00 开始,您将得到 00:12。

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多