113th LeetCode Weekly Contest Largest Time for Given Digits

Given an array of 4 digits, return the largest 24 hour time that can be made.

The smallest 24 hour time is 00:00, and the largest is 23:59.  Starting from 00:00, a time is larger if more time has elapsed since midnight.

Return the answer as a string of length 5.  If no valid time can be made, return an empty string.

Example 1:

Input: [1,2,3,4]
Output: "23:41"

Example 2:

Input: [5,5,5,5]
Output: ""

Note:

  1. A.length == 4
  2. 0 <= A[i] <= 9

给四个数字,组合成时间看得到的最大值是多少

全排列过去,把不符合规定的筛选掉就OK

class Solution {
public:
    string largestTimeFromDigits(vector<int>& A) {
        int x[4];
        for(int i=0;i<4;i++){
            x[i]=A[i];
        }
        string u = "";
        sort(x,x+4);
        do{
            if(x[0]>=3){
            continue;
            }
            if(x[0]==2){
                if(x[1]>3){
                    continue;
                }
            }
            if(x[2]>=6){
                continue;
            }
            
            int H,M;
            u = "";
            u += to_string(x[0]);
            u += to_string(x[1]);
            u +=':';
            u += to_string(x[2]);
            u += to_string(x[3]);
            cout<<u<<endl;
            cout<<x[0]<<" "<<x[1]<<" "<<x[2]<<" "<<x[3]<<endl;
        }while(next_permutation(x,x+4));
        return u;
    }
};
原文地址:https://www.cnblogs.com/yinghualuowu/p/10055327.html