1736. 替换隐藏数字得到的最晚时间

2022-11-12 14:49:46   2025-02-09 11:10:43   其他   166 views  

 

原题链接

给你一个字符串 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
  • 题目数据保证你可以由输入的字符串生成有效的时间

我的答案

Problem: 1736. 替换隐藏数字得到的最晚时间

思路

要注意时间之间各位置的相互影响以及?出现的位置

解题方法

先分割成数组方便找到?和替换等操作
然后判断?出现的位置(值得注意的是数组中的0和1的内容,3和4位置都替换成固定数即可)
如果数组中0和1同时出现?把第一位换成2即可,后续逻辑会把第二位换成3
如果第一位是?查看一下第二位的值是否大于3,如果是把第一位换成1,如果不是将第一位换成2
如果第二位是?查看第一位的值是否为2,如果是把第二位换成4,如果不是则换成9

Code


class Solution {

    /**
     * @param String $time
     * @return String
     */
    function maximumTime($time) {
        //切割成数组
        $time = str_split($time,1);
        //循环数组找位置以及判断
        foreach($time as $k=>$v){
            //如果找到?
            if($time[$k]=="?"){
                //判断位置
                switch($k){
                    //第一位
                    case 0:
                        //如果第一位第二位同时出现?
                        if($time[1]=="?"){
                            $time[$k] = 2;
                        }
                        //如果第二位大于3
                        elseif($time[1]>3){
                            $time[$k] = 1;
                        }
                        else{
                            $time[$k] = 2;
                        }
                        break;
                    //第二位
                    case 1:
                        //判断第一位是否为2
                        if($time[0]==2){
                            $time[$k] = 3;
                        }else{
                            $time[$k] = 9;
                        }
                        break;
                    case 3:
                        $time[$k] = 5;
                        break;
                    case 4:
                        $time[$k] = 9;
                        break;          
                }
            }
        }
        //数组转成字符串输出
        return implode($time);

    }
}

其他php答案