解题思路:我就是用的暴力办法,依次判断范围,哈哈哈
class Solution {
public:
string largestTimeFromDigits(vector<int>& A) {
string s = "";
int tag = 1;
sort(A.begin(),A.end(),greater<int>());
char a='x',b='x',c='x',d='x';
bool visited[4]={false,false,false,false};
//第一位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=2) {
a = '0' + A[i];
visited[i]=true;
break;
}
}
if (a=='x') return "";
if (a=='2') {
//第二位
for (int i=0;i<A.size();i++) {
//if (visited[i]==false && ((a<'2' && 0<=A[i] && A[i]<=9)||(a=='2' && 0<=A[i] && A[i]<=3))) {
if (visited[i]==false && 0<=A[i] && A[i]<=3) {
b = '0' + A[i];
visited[i]=true;
break;
}
}
if (b=='x') tag = 0;
//第三位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=5) {
c = '0' + A[i];
visited[i]=true;
break;
}
}
if (c=='x') tag = 0;
//第四位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=9) {
d = '0' + A[i];
visited[i]=true;
break;
}
}
if (d=='x') tag = 0;
if (tag == 0) {
a='x',b='x',c='x',d='x';
visited[0]=false,visited[1]=false,visited[2]=false,visited[3]=false;
//第一位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<2) {
a = '0' + A[i];
visited[i]=true;
break;
}
}
if (a=='x') return "";
//第二位
for (int i=0;i<A.size();i++) {
//if (visited[i]==false && ((a<'2' && 0<=A[i] && A[i]<=9)||(a=='2' && 0<=A[i] && A[i]<=3))) {
if (visited[i]==false && 0<=A[i] && A[i]<=9) {
b = '0' + A[i];
visited[i]=true;
break;
}
}
if (b=='x') return "";
//第三位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=5) {
c = '0' + A[i];
visited[i]=true;
break;
}
}
if (c=='x') return "";
//第四位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=9) {
d = '0' + A[i];
visited[i]=true;
break;
}
}
if (d=='x') return "";
} else return s+a+b+":"+c+d;
} else {
//第二位
for (int i=0;i<A.size();i++) {
//if (visited[i]==false && ((a<'2' && 0<=A[i] && A[i]<=9)||(a=='2' && 0<=A[i] && A[i]<=3))) {
if (visited[i]==false && 0<=A[i] && A[i]<=9) {
b = '0' + A[i];
visited[i]=true;
break;
}
}
if (b=='x') return "";
//第三位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=5) {
c = '0' + A[i];
visited[i]=true;
break;
}
}
if (c=='x') return "";
//第四位
for (int i=0;i<A.size();i++) {
if (visited[i]==false && 0<=A[i] && A[i]<=9) {
d = '0' + A[i];
visited[i]=true;
break;
}
}
if (d=='x') return "";
}
return s+a+b+":"+c+d;
}
};