原题地址(简单)

方法1—计数

思路

这题难度倒还可以,思路也比较好想。开始没看到可以重复,用了哈希表,后来发现不对,就改了两个数组,每次求交集就完事了。

只不过用c++,如何把单个的char字符转换成string,把我给搞蒙了。

难点:把单个char转换为string

现记录如下:

  1. char c = 'a';
  2. string s(1, c); //定义一个s,用单个字符初始化
  3. vector<string> v;
  4. v.push_back(1, c); //添入一个字符的string

代码

  1. class Solution {
  2. public:
  3. vector<string> commonChars(vector<string>& A) {
  4. if(A.size() == 0) return {};
  5. vector<int> a(26, 0);
  6. for(auto c : A[0])
  7. a[c -'a'] += 1;
  8. for(int i = 1; i < A.size(); i++) {
  9. vector<int> tmp(26, 0);
  10. for(auto c : A[i]){
  11. tmp[c - 'a'] += 1;
  12. }
  13. for(int k = 0; k < 26; k++)
  14. a[k] = min(a[k], tmp[k]);
  15. }
  16. vector<string> v;
  17. for(int i = 0; i < 26; i++){
  18. for(int j=0; j<a[i]; j++){
  19. v.emplace_back(1, i+'a');
  20. }
  21. }
  22. return v;
  23. }
  24. };

时空复杂度

Q([2YZ(QG5PF013GP}1]QCR.png