字符串]leetcode1729:替换隐藏数字得到的最晚时间(easy)"/>
[枚举][字符串]leetcode1729:替换隐藏数字得到的最晚时间(easy)
题目:
题解:
- 思路1:直接用 if else 模拟几个情况就行了
- 思路2:暴力枚举,24*60种情况,从大时间到小时间来枚举,然后判断枚举的字符串是否和题目给的字符串是否匹配就行了。
代码如下:
class Solution {
public:// 题解1:纯模拟题string maximumTime_1(string s) {// 处理s[0]是否为'?'的情况if(s[0]=='?'){if(s[1]=='?')s[0]='2',s[1]='3';else if(s[1]<='3')s[0]='2';else s[0]='1';}// 处理s[0]!='?',s[1]是否为'?'的情况else if(s[1]=='?'){if(s[0]=='2')s[1]='3';else s[1]='9';}// 后面的min随意改就行了if(s[3]=='?')s[3]='5';if(s[4]=='?')s[4]='9';return s;}// 题解2:暴力枚举,即本题就是一个字符串匹配题string maximumTime(string s){for(int i=23;i>=0;i--)for(int j=59;j>=0;j--){char str[20];sprintf(str,"%02d:%02d",i,j);if(check(s,str))return str;}return "";}// 判断两个字符串是否匹配bool check(string s,char str[]){for(int i=0;i<5;++i)if(s[i]==str[i]||s[i]=='?')continue;else return false;return true;}
};
更多推荐
[枚举][字符串]leetcode1729:替换隐藏数字得到的最晚时间(easy)
发布评论