<p>Given an array <code>arr</code> of 4 digits, find the latest 24-hour time that can be made using each digit <strong>exactly once</strong>.</p>

<p>24-hour times are formatted as <code>&quot;HH:MM&quot;</code>, where <code>HH</code> is between <code>00</code> and <code>23</code>, and <code>MM</code> is between <code>00</code> and <code>59</code>. The earliest 24-hour time is <code>00:00</code>, and the latest is <code>23:59</code>.</p>

<p>Return <em>the latest 24-hour time in <code>&quot;HH:MM&quot;</code> format</em>. If no valid time can be made, return an empty string.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> arr = [1,2,3,4]
<strong>Output:</strong> &quot;23:41&quot;
<strong>Explanation:</strong> The valid 24-hour times are &quot;12:34&quot;, &quot;12:43&quot;, &quot;13:24&quot;, &quot;13:42&quot;, &quot;14:23&quot;, &quot;14:32&quot;, &quot;21:34&quot;, &quot;21:43&quot;, &quot;23:14&quot;, and &quot;23:41&quot;. Of these times, &quot;23:41&quot; is the latest.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> arr = [5,5,5,5]
<strong>Output:</strong> &quot;&quot;
<strong>Explanation:</strong> There are no valid 24-hour times as &quot;55:55&quot; is not valid.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>arr.length == 4</code></li>
	<li><code>0 &lt;= arr[i] &lt;= 9</code></li>
</ul>

class Solution {
public:
vector<string>perm;
bool valid(string &s){
    string hour="";
    hour+=s[0];hour+=s[1];
    int hh=stoi(hour);
    string min="";
    min+=s[2];min+=s[3];
    int mm=stoi(min);
    if(hh>23||mm>59)return 0;
    return 1;
}
void go(int idx,vector<int>&v){
    if(idx==4){
        string cur="";
        for(auto j:v)cur+=to_string(j);
        perm.push_back(cur);
    }
    for(int i=idx;i<4;i++){
        swap(v[i],v[idx]);
        go(idx+1,v);
        swap(v[i],v[idx]);
    }
}
    string largestTimeFromDigits(vector<int>& v) {
        go(0,v);
        string ans="";
        int n=perm.size();
        for(int i=0;i<n;i++){
            if(valid(perm[i])&&ans<perm[i])ans=perm[i];
        }
        if(ans.length()!=4)return "";
        string res="";
        res+=ans[0];
        res+=ans[1];
        res+=':';
        res+=ans[2];
        res+=ans[3];
        return res;
    }
};
16200