原题地址(简单)
方法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;}};
时空复杂度
![Q([2YZ(QG5PF013GP}1]QCR.png](/uploads/projects/zhcz@leetcode/a1b19ae055774a892b3d1bb516fec17b.png)
