力扣1736. 替換隱藏數字獲得的最晚時間-C語言實現-簡單題

題目

傳送門git

給你一個字符串 time ,格式爲 hh:mm(小時:分鐘),其中某幾位數字被隱藏(用 ? 表示)。
有效的時間爲 00:00 到 23:59 之間的全部時間,包括 00:00 和 23:59 。
替換 time 中隱藏的數字,返回你能夠獲得的最晚有效時間。code

示例 1:blog

輸入:time = "2?:?0"
輸出:"23:50"
解釋:以數字 '2' 開頭的最晚一小時是 23 ,以 '0' 結尾的最晚一分鐘是 50 。圖片

示例 2:ci

輸入:time = "0?:3?"
輸出:"09:39"leetcode

示例 3:字符串

輸入:time = "1?:22"
輸出:"19:22"get

提示:it

time 的格式爲 hh:mm
題目數據保證你能夠由輸入的字符串生成有效的時間

題解

模板

char * maximumTime(char * time){

}

分析

本題沒有什麼過高的要求,主要是對於一些狀況選用須要必定的條件:
據不一樣位數上面是‘?’咱們能夠分類:
第一位:
第一位最大確定是2啊,可是其實是有一個要求的,第二位上若是是超過3的數字的話就天然不能用2來填充,這時候就是用1來填充,除去第二位是數字的狀況,第二位也多是?此時第一位也是能夠用2的。因此有以下判斷:模板

if(i==0)
            {
            if(time[1]<'4'||time[1]=='?')time[i]='2';
            else time[i]='1';
            }

第二位:此時咱們須要考慮第一位的數字來決定第二位的上限,第一位若是是2就只能填3,可是不是2的話就是能夠用9來填充;

if(i==1)
            {
                if(time[0]=='2')time[i]='3';
                else time[i]='9';
            }

第三位是":"不進行一個狀況分析
第四位,第五位:
這兩位都沒什麼講究,第四位最大是5,第五位最大是9,因此能夠獲得如下代碼:

if(i==3)time[i]='5';
	if(i==4)time[i]='9';

完整代碼

char * maximumTime(char * time){
    for(int i=0;i<5;i++)
    {
        if(time[i]=='?')
        {
            if(i==2)continue;
            if(i==0)
            {
            if(time[1]<'4'||time[1]=='?')time[i]='2';
            else time[i]='1';
            }
            if(i==1)
            {
                if(time[0]=='2')time[i]='3';
                else time[i]='9';
            }
            if(i==3)time[i]='5';
            if(i==4)time[i]='9'; 
        }
    }
    return time;
}

運行

在這裏插入圖片描述

相關文章
相關標籤/搜索