zoukankan      html  css  js  c++  java
  • LeetCode5661. 替换隐藏数字得到的最晚时间

     法一、直接暴力枚举

    class Solution {
    public:
        bool check(string time,string res){
            for(int i = 0;i < 5;i++){
                if(time[i] == res[i] || time[i] == '?') 
                    continue;
                return false;
            }
            return true;
        }
        string maximumTime(string time) {
            for(int i = 23;i >= 0;i--){
                for(int j = 59;j >= 0;j--){
                    char res[10];
                    sprintf(res,"%02d:%02d",i,j);
                    if(check(time,res))
                        return res;
                }
            }
            return "";
        }
    };

     实质就是正则表达式匹配,从后往前暴力枚举,查看是否匹配。

    学习sprintf 的用法

    法二、直接模拟

    class Solution {
    public:
        string maximumTime(string time) {
            if(time[0] == '?' ){
                if(time[1] == '0' || time[1] == '1'||time[1] == '2' || time[1] == '3' || time[1] == '?' )
                    time[0] = '2';
                else 
                    time[0] = '1';
            }
            if(time[1] == '?'){
                if(time[0] == '2') time[1] = '3';
                else time[1] = '9';
            }
            if(time[3] == '?' ) time[3] = '5' ;
            if(time[4] == '?' ) time[4] = '9' ;
            return time;
        }
    };
  • 相关阅读:
    HDU 2081 手机短号
    HDU 2053 Switch Game
    HDU 2040 亲和数
    HDU 2070 Fibbonacci Number
    redis集群安装2
    redis集群1
    批量更新sql
    centos 6升级 GCC 到4.8
    排序4 -- 插入排序
    排序3--选择排序
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14321035.html
Copyright © 2011-2022 走看看