持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!
力扣第 89 场双周赛
力扣第 89 场双周赛-力扣
a了两题,居然还有1000多名,第三题居然是二分做完之后发现了,就算做出来也只能上小百名把 唉,,,,
2437. 有效时间的数目
给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 "hh:mm" 。最早 可能的时间是 "00:00" ,最晚 可能的时间是 "23:59" 。
在字符串 time 中,被字符 ? 替换掉的数位是 未知的 ,被替换的数字可能是 0 到 9 中的任何一个。
请你返回一个整数 answer ,将每一个 ? 都用 0 到 9 中一个数字替换后,可以得到的有效时间的数目。
示例 1
输入:time = "?5:00"
输出:2
解释:我们可以将 ? 替换成 0 或 1 ,得到 "05:00" 或者 "15:00" 。注意我们不能替换成 2 ,因为时间 "25:00" 是无效时间。所以我们有两个选择。
示例 2
输入: time = "0?:0?"
输出: 100
解释: 两个 ? 都可以被 0 到 9 之间的任意数字替换,所以我们总共有 100 种选择。
示例 3
输入:time = "??:??"
输出:1440
解释:小时总共有 24 种选择,分钟总共有 60 种选择。所以总共有 24 * 60 = 1440 种选择。
提示
- time 是一个长度为 5 的有效字符串,格式为 "hh:mm" 。
- "00" <= hh <= "23"
- "00" <= mm <= "59"
- 字符串中有的数位是 '?' ,需要用 0 到 9 之间的数字替换。
代码
这个题虽然不难哈,但是要考虑的情况蛮多。主要在小时那里,考虑时的个位需要做很多判断,使用就会漏掉一些条件,然后wa,最后在评论里面看到有人说,先把所有可能的情况存下来,然后暴力匹配给定的字符串,这个做法也很不错。
class Solution {
public int countTime(String time) {
int res = 1;
if(time.charAt(3) == '?') {
res = 6;
}
if (time.charAt(4) == '?') {
res = res == 1 ? 10 : 60;
}
if (time.charAt(0) == '?' && time.charAt(1) == '?') {
return res * 24;
}
if (time.charAt(1) == '?') {
if (time.charAt(0) == '2') {
return res*4;
}else {
return res * 10;
}
}
if (time.charAt(0) == '?') {
if (time.charAt(1) >'3') {
return res * 2;
} else {
return res * 3;
}
}
return res;
}
}
3.结束
第四题还是无从下手,我什么时候能成为四题选手啊!!!!gogogo,刷题刷题,每天一道,三年1000道!!!!