leet-code/src/main/java/leetcode/editor/cn/NextClosestTime.java
2022-03-15 22:08:06 +08:00

80 lines
2.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给定一个形如 "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)
}