681:最近时刻
This commit is contained in:
parent
4b20d65eff
commit
8bbbab2f81
80
src/main/java/leetcode/editor/cn/NextClosestTime.java
Normal file
80
src/main/java/leetcode/editor/cn/NextClosestTime.java
Normal 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)
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<p>给定一个形如<meta charset="UTF-8" /> <code>"HH:MM"</code> 表示的时刻<meta charset="UTF-8" /> <code>time</code> ,利用当前出现过的数字构造下一个距离当前时间最近的时刻。每个出现数字都可以被无限次使用。</p>
|
||||
|
||||
<p>你可以认为给定的字符串一定是合法的。例如,<meta charset="UTF-8" /> <code>"01:34"</code> 和 <meta charset="UTF-8" /> <code>"12:09"</code> 是合法的,<code>“1:34”</code> 和 <code>“12:9”</code> 是不合法的。</p>
|
||||
|
||||
<p> </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> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<p><meta charset="UTF-8" /></p>
|
||||
|
||||
<ul>
|
||||
<li><code>time.length == 5</code></li>
|
||||
<li><code>time</code> 为有效时间,格式为 <code>"HH:MM"</code>.</li>
|
||||
<li><code>0 <= HH < 24</code></li>
|
||||
<li><code>0 <= MM < 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>
|
Loading…
Reference in New Issue
Block a user