一、题目
Given a string array words, return an array of all characters that show up in all strings within the words (including duplicates). You may return the answer in any order.
Example 1:
Input: words = [“bella”,“label”,“roller”]
Output: [“e”,“l”,“l”]
Example 2:
Input: words = [“cool”,“lock”,“cook”]
Output: [“c”,“o”]
Constraints:
1 <= words.length <= 100
1 <= words[i].length <= 100
words[i] consists of lowercase English letters.
二、题解
class Solution {
public:
vector<string> commonChars(vector<string>& words) {
int n = words.size();
vector<int> hash(26,0);
vector<int> hash1(26,0);
vector<string> res;
for(int i = 0;i < words[0].size();i++){
hash[words[0][i] - 'a']++;
}
for(int i = 1;i < n;i++){
for(int h = 0;h < 26;h++) hash1[h] = 0;
string s = words[i];
for(int j = 0;j < s.size();j++){
hash1[s[j] - 'a']++;
}
//更新hash
for(int k = 0;k < 26;k++){
hash[k] = min(hash[k],hash1[k]);
}
}
for(int i = 0;i < 26;i++){
while(hash[i] != 0){
res.push_back(string(1,'a' + i));
hash[i]--;
}
}
return res;
}
};