Largest Time for Given Digits(C++给定数字能组成的最大时间)

解题思路:我就是用的暴力办法,依次判断范围,哈哈哈

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;
    }
};
发布了302 篇原创文章 · 获赞 277 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/coolsunxu/article/details/105550303
今日推荐