给定一个由 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
C++
class Solution {
public:
vector<string> func(string s)
{
vector<string> res;
res.push_back(s);
while(next_permutation(s.begin(),s.end()))
{
res.push_back(s);
}
return res;
}
string judge(string s)
{
string a=s.substr(0,2);
string b=s.substr(2,2);
if(atoi(a.c_str())>23 || atoi(b.c_str())>59)
{
return "";
}
string ans=a+":"+b;
return ans;
}
string largestTimeFromDigits(vector<int>& A)
{
int n=A.size();
if(n!=4)
{
return "";
}
sort(A.begin(),A.end());
string str="";
for(int i=0;i<n;i++)
{
str+=to_string(A[i]);
}
vector<string> vec=func(str);
sort(vec.begin(),vec.end());
for(int i=vec.size()-1;i>=0;i--)
{
string tmp=judge(vec[i]);
if(tmp!="")
{
return tmp;
}
}
return "";
}
};