題目
給予兩個字串的陣列,words1、words2
判斷words2內的單詞,是否為words1的Subsets
要符合所有words2內的所有組合,才算是words1的Subsets
解題方法
先將words2單字內出現的字母數量記錄下來
而為什麼要取Max的原因在於,如果符合最大的出現數目,代表其數目以下也會符合為單字的子集合
根據這樣的想法,再去判斷就可以輕鬆解決題目
程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| class Solution { public: vector<string> wordSubsets(vector<string>& words1, vector<string>& words2) { vector<string> ans; vector<int> Charcount(26); for(int i=0;i<words2.size();++i) { vector<int> t = counter(words2[i]); for(int j=0;j<26;++j) Charcount[j] = max(Charcount[j],t[j]); } for(int i=0;i<words1.size();++i) { vector<int> t = counter(words1[i]); for(int j=0;j<26;++j) { if(t[j] < Charcount[j]) break; else if(j == 25) ans.push_back(words1[i]); } } return ans; } vector<int> counter(string &tmp) { vector<int> res(26); for(char c:tmp) ++res[c - 'a']; return res; } };
|