681:最近时刻

This commit is contained in:
轩辕龙儿 2022-03-15 22:08:06 +08:00
parent 4b20d65eff
commit 8bbbab2f81
2 changed files with 117 additions and 0 deletions

View File

@ -0,0 +1,80 @@
//给定一个形如 "HH:MM" 表示的时刻 time 利用当前出现过的数字构造下一个距离当前时间最近的时刻每个出现数字都可以被无限次使用
//
// 你可以认为给定的字符串一定是合法的例如 "01:34" "12:09" 是合法的1:34 12:9 是不合法的
//
//
//
// 示例 1:
//
//
//输入: "19:34"
//输出: "19:39"
//解释: 利用数字 1, 9, 3, 4 构造出来的最近时刻是 19:39 5 分钟之后
//结果不是 19:33 因为这个时刻是 23 小时 59 分钟之后
//
//
// 示例 2:
//
//
//输入: "23:59"
//输出: "22:22"
//解释: 利用数字 2, 3, 5, 9 构造出来的最近时刻是 22:22
//答案一定是第二天的某一时刻所以选择可构造的最小时刻
//
//
//
//
// 提示
//
//
//
//
// time.length == 5
// time 为有效时间格式为 "HH:MM".
// 0 <= HH < 24
// 0 <= MM < 60
//
// Related Topics 字符串 枚举 👍 60 👎 0
package leetcode.editor.cn;
import java.util.HashSet;
import java.util.Set;
//681:最近时刻
public class NextClosestTime {
public static void main(String[] args) {
Solution solution = new NextClosestTime().new Solution();
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String nextClosestTime(String time) {
String[] arr = time.split(":");
Set<Character> s = new HashSet();
s.add(arr[0].charAt(0));
s.add(arr[0].charAt(1));
s.add(arr[1].charAt(0));
s.add(arr[1].charAt(1));
int hour = Integer.valueOf(arr[0]);
int minute = Integer.valueOf(arr[1]);
int minutes = hour * 60 + minute;
for (int i = minutes + 1; i <= minutes + 24 * 60; i++) {
String h = "" + (i % (24 * 60)) / 60;
if (h.length() == 1) h = "0" + h;
String m = "" + (i % (24 * 60)) % 60;
if (m.length() == 1) m = "0" + m;
if (s.contains(m.charAt(0)) &&
s.contains(m.charAt(1)) &&
s.contains(h.charAt(0)) &&
s.contains(h.charAt(1))) {
return h + ":" + m;
}
}
return "";
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,37 @@
<p>给定一个形如<meta charset="UTF-8" />&nbsp;<code>"HH:MM"</code> 表示的时刻<meta charset="UTF-8" />&nbsp;<code>time</code>&nbsp;,利用当前出现过的数字构造下一个距离当前时间最近的时刻。每个出现数字都可以被无限次使用。</p>
<p>你可以认为给定的字符串一定是合法的。例如,<meta charset="UTF-8" />&nbsp;<code>"01:34"</code><meta charset="UTF-8" />&nbsp;<code>"12:09"</code> 是合法的,<code>“1:34”</code><code>“12:9”</code> 是不合法的。</p>
<p>&nbsp;</p>
<p><strong>示例 1:</strong></p>
<pre>
<strong>输入:</strong> "19:34"
<strong>输出:</strong> "19:39"
<strong>解释:</strong> 利用数字 <strong>1, 9, 3, 4</strong> 构造出来的最近时刻是 <strong>19:39</strong>,是 5 分钟之后。
结果不是 <strong>19:33</strong> 因为这个时刻是 23 小时 59 分钟之后。
</pre>
<p><strong>示例 2:</strong></p>
<pre>
<strong>输入:</strong> "23:59"
<strong>输出:</strong> "22:22"
<strong>解释:</strong> 利用数字 <strong>2, 3, 5, 9</strong> 构造出来的最近时刻是 <strong>22:22</strong>
答案一定是第二天的某一时刻,所以选择可构造的最小时刻。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<p><meta charset="UTF-8" /></p>
<ul>
<li><code>time.length == 5</code></li>
<li><code>time</code>&nbsp;为有效时间,格式为&nbsp;<code>"HH:MM"</code>.</li>
<li><code>0 &lt;= HH &lt; 24</code></li>
<li><code>0 &lt;= MM &lt; 60</code></li>
</ul>
<div><div>Related Topics</div><div><li>字符串</li><li>枚举</li></div></div><br><div><li>👍 60</li><li>👎 0</li></div>