从给定的HH:MM 24小时格式中找到下一个最早可能时间的最佳方法是什么

时间:2018-06-15 19:24:38

标签: arrays algorithm sorting combinations time-format

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

1 个答案:

答案 0 :(得分:0)

我想我会从原始时间的数字(这里是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。