题目:
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。
请你返回 words 数组中 一致字符串 的数目。
思路:
哈希表,一种比较直接的思路是,用哈希表或数组 s 记录 allowed 中的字符。然后遍历 words 数组,对于每个字符串 w,判断其是否由 allowed 中的字符组成。若是,答案加一。
代码:
class Solution {
public:
int countConsistentStrings(string allowed, vector<string>& words) {
bitset<26> s;
for (auto& c : allowed) s[c - 'a'] = 1;
int ans = 0;
auto check = [&](string& w) {
for (auto& c : w) if (!s[c - 'a']) return false;
return true;
};
for (auto& w : words) ans += check(w);
return ans;
}
};