本文主要是介绍Leetcode--Java--1736. 替换隐藏数字得到的最晚时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。
有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。
替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。
样例描述
示例 1:输入:time = "2?:?0"
输出:"23:50"
解释:以数字 '2' 开头的最晚一小时是 23 ,以 '0' 结尾的最晚一分钟是 50 。
示例 2:输入:time = "0?:3?"
输出:"09:39"
思路
- 贪心 + 模拟。从高位到低位模拟每个位出现?的情况。
- 第0和第1个位置为?时会受到对方的限制,注意判断
- 第3和第4个位置直接取最大的值即可
- 先转化为字符数组可以方便取值,最后返回string用
new String(char[])
构造器实现
不要用toString()会有问题
代码
class Solution {public String maximumTime(String time) {//先转成字符数组方面取值char chTime[] = time.toCharArray();//看第二位决定第一位最大的取值if (chTime[0] == '?') {chTime[0] = (chTime[1] >= '4' && chTime[1] <= '9') ? '1' : '2';}//看第一位的情况决定第二位的最大值if (chTime[1] == '?') {chTime[1] = (chTime[0] == '2') ? '3' : '9'; }//若是第三第四位 直接取最大值即可if (chTime[3] == '?') {chTime[3] = '5';}if (chTime[4] == '?') {chTime[4] = '9';}return new String(chTime);}
}
这篇关于Leetcode--Java--1736. 替换隐藏数字得到的最晚时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!