string shortestCompletingWord(string lp, vector<string>& words) {
transform(lp.begin(), lp.end(), lp.begin(), ::tolower);
string res;
int sz = 16;
unordered_map<char,int> lm;
for(char c: lp) {
if(c>='a' && c<='z') lm[c]++;
}
for(auto &s: words) {
if(s.size()<sz) {
unordered_map<char,int> tm = lm;
for(char c : s) if(tm.count(c)) tm[c]--;
bool complete = true;
for(auto &m: tm) {
if(m.second>0) {complete = false; break;}
}
if(complete) {
res = s;
sz = s.size();
}
}
}
return res;
}
No comments:
Post a Comment