1736. Latest Time by Replacing Hidden Digits

ss
3 min readJan 24, 2021

--

"2?:?0"

遇到?的字, 我們要令這個?可以成為時間的最大值

總共也就四個字, 我們可以去針對這四個字做分析

分針個位數: 這個最大就是9了, 若遇到?一定等於9分針十位數: 這個最大就是5了, 若遇到?一定等於5時針個位數: 理論上也是9, 不過這牽扯到時針十位數有可能是2, 如果是2, 代表他只能是3(因為最大23點)
時針十位數: 理論上是2, 但若時針個位數>3, 這邊放二會超出, 所以我們還需判斷是2或是1

我自己寫的方法比較土炮

class Solution {
public:
string maximumTime(string time) {
char clock_ten = time.at(0);
char clock_one = time.at(1);
//skip : , index 2
char min_ten = time.at(3);
char min_one = time.at(4);
if(min_one == '?'){
min_one = '9';
}
if(min_ten == '?'){
min_ten = '5';
}
if(clock_ten != '?' && clock_one == '?'){
if(clock_ten < '2'){
clock_one = '9';
}else{
clock_one = '3';
}
}else if (clock_ten == '?' && clock_one != '?'){
if(clock_one > '3'){
clock_ten = '1';
}else{
clock_ten = '2';
}
}else if (clock_ten == '?' && clock_one == '?'){
clock_ten = '2';
clock_one = '3';
}

string res {clock_ten, clock_one, ':', min_ten, min_one};

return res;

}
};

我在討論區看到一個精簡到爆的操作

class Solution {
public:
string maximumTime(string time) {
time[4] = time[4] == '?' ? '9': time[4];
time[3] = time[3] == '?' ? '5': time[3];
time[1] = time[1] == '?'? ((time[0] == '2' || time[0] == '?') ? '3': '9') :time[1];
time[0] = time[0] == '?'? ((time[1] > '3' || time[0] != '?') ? '1': '2') : time[0];
return time;

}
};

--

--

ss
ss

No responses yet