给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。
最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。
以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。
示例 1:
输入:[1,2,3,4] 输出:"23:41"
示例 2:
输入:[5,5,5,5] 输出:""
提示:
A.length == 4
0 <= A[i] <= 9
class Solution {
public:
string largestTimeFromDigits(vector<int>& A) {
if (A.size() != 4) {
return "";
}
string max_time = "";
vector<bool> dict(A.size(), false);
string temp;
Permute(A, temp, 0, dict, max_time);
return max_time;
}
void Permute(vector<int>& A, string& temp, int count, vector<bool>& dict, string& max_time) {
if (count >= 4) {
if (Valid(temp) && temp > max_time) {
max_time = temp;
}
return ;
}
for (int i = 0; i < A.size(); ++i) {
if (dict[i]) {
continue;
}
dict[i] = true;
temp.push_back(A[i] + '0');
if (count == 1) {
temp.push_back(':');
}
Permute(A, temp, count + 1, dict, max_time);
temp.pop_back();
if (count == 1) {
temp.pop_back();
}
dict[i] = false;
}
}
bool Valid(string& temp) {
int hour = atoi(temp.substr(0, 2).c_str());
int minute = atoi(temp.substr(3,2).c_str());
if (hour > 23 || hour < 0 || minute < 0 || minute > 59) {
return false;
}
return true;
}
};