挺简单的,计数就行了
class Solution {
public:
bool judge(vector<int>& count, string A){
vector<int> count1(26, 0);
for (int j=0;j<A.size();j++){
count1[int(A[j]-'a')] ++;
}
for(int i=0;i<26;i++){
if (count1[i]<count[i]){
return false;
}
}
return true;
}
vector<string> wordSubsets(vector<string>& A, vector<string>& B) {
vector<int> count(26, 0);
for (int i=0;i<B.size();i++){
// gain count1;
vector<int> count1(26, 0);
for (int j=0;j<B[i].size();j++){
count1[int(B[i][j]-'a')] ++;
}
// compare conut1 and count2
for(int i=0;i<26;i++){
if (count1[i]>count[i]){
count[i] = count1[i];
}
}
// count1 clear
count1.clear();
}
// count A
vector<string> res;
for (int i=0;i<A.size();i++){
if (judge(count, A[i])){
res.push_back(A[i]);
}
}
return res;
}
};