- 用户通过次数125
- 用户尝试次数213
- 通过次数127
- 提交次数774
- 题目难度Easy
给定一个由 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 ans = "";
string largestTimeFromDigits(vector<int>& A) {
check(A[],A[],A[],A[]);
check(A[],A[],A[],A[]);
check(A[],A[],A[],A[]);
check(A[],A[],A[],A[]);
check(A[],A[],A[],A[]);
check(A[],A[],A[],A[]);
return ans;
} void check(int a,int b,int c,int d){
string first = best(a,b,);
string second = best(c,d,);
if(first == ""||second == "")return;
string cand = first + ":" + second;
if(bijiao(cand,ans))ans = cand;
return;
} bool bijiao(string cand,string ans){
if(ans == "")return ;
int a = (cand[]-'')* + (cand[]-'')* + (cand[]-'')* + (cand[]-'');
int b = (ans[]-'')* + (ans[]-'')* + (ans[]-'')* + (ans[]-'');
return a > b;
}
string caonima(int num){
string res = "";
res += (num+'');
return res;
} string best(int a,int b,int limit){
int res = max(a*+b<limit ? a*+b:-,b*+a<limit ? b*+a:-);
if(res >= ) return to_string(res);
else if(res>= && res<)return caonima(res);
else return "";
}
};
_再也不会做这种恶心死了的题,烦死了快,各种边界条件,输出格式!!