LeetCode 5661. 替换隐藏数字得到的最晚时间 做题小结

题目

给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。 有效的时间为 00:0023:59 之间的所有时间,包括 00:0023: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); } }

__EOF__

本文作者nmydt
本文链接https://www.cnblogs.com/nmydt/p/14494117.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   nmydt  阅读(134)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示