博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Next Closest Time
阅读量:4958 次
发布时间:2019-06-12

本文共 2033 字,大约阅读时间需要 6 分钟。

Given a time represented in the format "HH:MM", form the next closest time by reusing the current digits. There is no limit on how many times a digit can be reused.

You may assume the given input string is always valid. For example, "01:34", "12:09" are all valid. "1:34", "12:9" are all invalid.

Example 1:

Input: "19:34"

Output: "19:39"
Explanation: The next closest time choosing from digits 1, 9, 3, 4, is 19:39, which occurs 5 minutes later. It is not 19:33, because this occurs 23 hours and 59 minutes later.
Example 2:

Input: "23:59"

Output: "22:22"
Explanation: The next closest time choosing from digits 2, 3, 5, 9, is 22:22. It may be assumed that the returned time is next day's time since it is smaller than the input time numerically.

1 public class Test { 2     public String nextClosestTime(String time) { 3         char[] res = time.toCharArray(); 4         char[] digits = new char[] { res[0], res[1], res[3], res[4] }; 5         Arrays.sort(digits); 6  7         // 从右到左对res进行操作,只要有当前最小单位时间的替换,返回替换后的时间 8         res[4] = findNext(digits, res[4], '9'); 9         if (res[4] > time.charAt(4)) return String.valueOf(res);10         11         res[3] = findNext(digits, res[3], '5');12         if (res[3] > time.charAt(3)) return String.valueOf(res);13         14         res[1] = res[0] == '2' ? findNext(digits, res[1], '3') : findNext(digits, res[1], '9');15         if (res[1] > time.charAt(1)) return String.valueOf(res);16         17         res[0] = findNext(digits, res[0], '2');18         return String.valueOf(res);19     }20 21     private char findNext(char[] digits, char cur, char upper) {22         if (cur == upper) return digits[0];23         // 找到cur的位置,然后加1得到下一个位置24         int pos = Arrays.binarySearch(digits, cur) + 1;25         // 如果下一个位置的数还是原来的数,或者超过了上限数,前进到再下一个26         while (pos < 4 && (digits[pos] == cur || digits[pos] > upper)) {27             pos++;28         }29         return pos == 4 ? digits[0] : digits[pos];30     }31 }

 

转载于:https://www.cnblogs.com/beiyeqingteng/p/10934970.html

你可能感兴趣的文章
svn服务器搭建之SlikSvn
查看>>
8月10号__学习报告
查看>>
android adb命令
查看>>
IDEA 修改文件编码
查看>>
如何判断个人电脑是多少位(32位?还是64位系统)
查看>>
把一个dt内的指定列 赋值都另一个dt里面 原来这么简单?!
查看>>
HDU 4899 Hero meet devil
查看>>
CentOS 7编译安装gcc5.3碰到的坑
查看>>
让ul li 或者table 进行循环往上滚屏
查看>>
Docker安装 小记
查看>>
mysql中的高级查询
查看>>
Spacebuilder在Mono上运行修改备忘
查看>>
java @param参数注解
查看>>
面向接口编程详解(三)——模式研究
查看>>
性能调优之SQL优化
查看>>
python几个时间函数
查看>>
Sql Server 2005如何导入DBF文件?
查看>>
数据库的相关概念
查看>>
XtraReport三动态数据绑定
查看>>
获取动态代理对象
查看>>