2023-05-09 LeetCode每日一题(有效时间的数目)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

2023-05-09每日一题

一、题目编号

2437. 有效时间的数目

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个长度为 5 的字符串 time 表示一个电子时钟当前的时间格式为 “hh:mm” 。最早 可能的时间是 “00:00” 最晚 可能的时间是 “23:59” 。

在字符串 time 中被字符 ? 替换掉的数位是 未知的 被替换的数字可能是 0 到 9 中的任何一个。

请你返回一个整数 answer 将每一个 ? 都用 0 到 9 中一个数字替换后可以得到的有效时间的数目。

四、解题代码

class Solution {
public:
    int countTime(string time) {
        int minute = 0;
        int hour = 0; 
        int res = 0;
        if(time[3] == '?'){
            if(time[4] == '?'){
                minute = 60;
            } else{
                minute = 6; 
            }
        } else{
            if(time[4] == '?'){
                minute += 10;
            } 
        }

        if(time[0] == '?'){
            if(time[1] == '?'){
                hour = 24;
            } else if(time[1] >= '4'){
                hour = 2;
            } else{
                hour = 3;
            }
        } else{
            if(time[1] == '?'){
                if(time[0] <= '1'){
                    hour = 10;
                } else{
                    hour = 4;
                }
            } 
        }

        if(minute == 0 && hour == 0){
            return 1;
        } else if(minute == 0 && hour != 0){
            return hour;
        } else if(minute != 0 && hour == 0){
            return minute;
        } else{
            return hour * minute;
        }
    return 0;
    }
};

五、解题思路

(1) 用hour来记录 ‘?’ 所能替换的小时有多少种可能性用minute来记录 ‘?’ 所能替换的分钟有多少种可能性。这里面讨论的是包含‘?’所能得到的小时和分钟的可能性如果hour和minute最终的值不为0即字符串中不包含‘?’其自身就是一种可能性应当返回答案1而不是0。

(2) 先讨论分钟分钟由M1M2来组成先讨论M1如果M1 是 ‘?’ 的话此时M1可能的值为0-5 6种如果M2 == ‘?’ 的话那么总共可能性为60种。如果M2 非问号则总共可能性为6种。如果M1不是 ‘?’ 的话判断M2是否为‘?’不是的话则总可能性为0种如果是‘?’ 的话则总可能性为10种即0-9。

(3) 再讨论时钟时钟由H1H2来组成先讨论H1如果H1是 ‘?’ 的话此时H1可能的值为0-2 2种如果M2 == ‘?’ 的话那么总共可能性为24种。如果M2非问号则总共可能性得根据M2来判断如果M2大于等于4则M1不能为2为两种否则的话M1可以为2则总共有3种。如果H1不是 ‘?’ 的话则判断H2是否是‘?’是的话则总可能性需要根据H1来判断判断方式与之前所述类似主要是判断H1是否是等于2。如果H2不是‘?’ 则总的可能性为0种。

(4) 最后按照hour和minute的值来进行组合求值。注意的是hour == 0且minute == 0返回1理由在(1) 中已经阐述。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“2023-05-09 LeetCode每日一题(有效时间的数目)” 的相关文章