题目描述
给定一个由 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
解题思路
四个数的全排列
vector<int> vect;
int vis[4];
string ans,str;
void pai(vector<int>& A,int nowN){
if(nowN == 4){
str = "";
if((vect[0]<=1 && vect[2] <= 5) || (vect[0] == 2 && vect[1] <=3 && vect[2] <=5)){
for(int j=0;j<4;j++)str+=vect[j]+'0';
str.insert(2,":");
ans = max(ans,str);
}
return;
}
if(nowN > 4) return;
for(int i = 0;i<4;i++){
if(vis[i] == 0){
vect.push_back(A[i]);
vis[i] = 1;
pai(A,nowN+1);
vect.pop_back();
vis[i] = 0;
}
}
}
string largestTimeFromDigits(vector<int>& A) {
ans = str = "";
memset(vis,0,sizeof(vis));
pai(A,0);
return ans;
}