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 |