题目
给你一个字符串 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"
示例 3:
输入:time = "1?:22"
输出:"19:22"
提示:
time 的格式为 hh:mm
题目数据保证你可以由输入的字符串生成有效的时间
解题思路与算法
- 字符串“00:00” 的4个0分别看做x1,x2,x3,x4
- 如果x3未知,x3最大为5;如果x4未知,x4最大为9
- x1,x2有三种情况:
- x1,x2未知: x1最大为2,x2最大为3
- x1未知: 如果x2大于3,那x1最大为1。因为没有24,25,,,,这样的小时,最大为23,最大具体时间为23:59;如果x2小于等于3,那么x1最大为2
- x2未知: 如果x1为2,x2最大只能为3;如果x1小于2,那么x2最大可以为9
代码
class Solution {
public String maximumTime(String time) {
char[] ch = time.toCharArray();
String x1=String.valueOf(ch[0]);
String x2=String.valueOf(ch[1]);
String x3=String.valueOf(ch[3]);
String x4=String.valueOf(ch[4]);
if(x1.equals("?") && x2.equals("?") ) {
ch[0]='2';
ch[1]='3';
}else if (x1.equals("?")) {
if((int)ch[1]-(int)('0')>3) {
ch[0]='1';
}else {
ch[0]='2';
}
}else if (x2.equals("?")) {
if((int)ch[0]-(int)('0')==2) {
ch[1]='3';
}else {
ch[1]='9';
}
}
if(x3.equals("?")) {
ch[3]='5';
}
if(x4.equals("?")) {
ch[4]='9';
}
return String.valueOf(ch);
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战