原题地址(简单)
方法1—计数
思路
这题难度倒还可以,思路也比较好想。开始没看到可以重复,用了哈希表,后来发现不对,就改了两个数组,每次求交集就完事了。
只不过用c++,如何把单个的char字符转换成string,把我给搞蒙了。
难点:把单个char转换为string
现记录如下:
char c = 'a';
string s(1, c); //定义一个s,用单个字符初始化
vector<string> v;
v.push_back(1, c); //添入一个字符的string
代码
class Solution {
public:
vector<string> commonChars(vector<string>& A) {
if(A.size() == 0) return {};
vector<int> a(26, 0);
for(auto c : A[0])
a[c -'a'] += 1;
for(int i = 1; i < A.size(); i++) {
vector<int> tmp(26, 0);
for(auto c : A[i]){
tmp[c - 'a'] += 1;
}
for(int k = 0; k < 26; k++)
a[k] = min(a[k], tmp[k]);
}
vector<string> v;
for(int i = 0; i < 26; i++){
for(int j=0; j<a[i]; j++){
v.emplace_back(1, i+'a');
}
}
return v;
}
};