leetcode 1736

这个题本来不打算写,既然某kerin告诉我他WA了,,,emmmm? dl 还能WA,新鲜事嘞

顺便昂,谢邀

WA了也不能不回消息吧(不过不是这个题)

鞭尸现场(雾

这个题一看就是不涉及任何复杂算法的简单题(当然简单题也不一定对)

算法应该叫"贪心"吧,不过是个枚举就是了。

如果说一个注意点就是,要注意string中每一位都是一个char类型,所以你比较数字的时候一定要- '0'

思路在注释里


#include<iostream>
#include<vector>
#include <queue>
#include <algorithm>
using namespace std;
//还是要注意一点就是string中的每一位都是char类型,搞数字的时候要  -'0'

class Solution {
public:
    char if_time1_digit(string time){//return the number time[0] should be
        if(time[1]-'0'>3)
            return '1';
        else{
            return '2';
        }
    }
    char if_time0_digit(string time){//return the number time[1] should be
        if(time[0]=='2')
            return '3';
        else{
            return '9';
        }
    }
    string maximumTime(string time) {//00:00
        //之前遇见过这个题,无数if的叠加罢了。
        //也是某种意义上的贪心
        //其实后两个数跟前面没有什么关系,直接搞就行
        //前两个数彼此有制约
        /*
         * 第一个数如果是二,第二个数只能是1 2 3
         * 第二个数如果超过3,第一个数只能是1
         * 如果两个数都没有,那就23(你可别傻到两个都取彼此的最大,29?)
         * 那就,枚举问号在哪里吧!
         */
        //前两个
        if (time[0] == '?' && time[1] == '?') {
            time[0] = '2';
            time[1] = '3';
        } else if (time[0] == '?' && time[1] != '?'){//不要再犯以前的错误啦!你time[0]和time[1]可能已经更改过了,不要用if让它再进来了
                time[0]=if_time1_digit(time);

        }else if(time[1] == '?' && time[0] != '?'){
            time[1]=if_time0_digit(time);
        }

        if(time[3]=='?'){
            time[3]='5';
        }

        if(time[4]=='?'){
            time[4]='9';
        }

        return time;

    }
};
posted @ 2021-07-24 22:05  安之若醇  阅读(72)  评论(2编辑  收藏  举报
Live2D服务支持