解题思路
采用位运算的思路不太好理解。但思想就是根据allowed
建立一个\(mask\),遍历words
中的每个元素的每个字符c
,查看\(mask\)的值是否为真。
如果存在就返回结果加一。
如果不存在就退出当前字符串的遍历,转向words
中的下一个字符串。
核心代码如下:
int countConsistentStrings(string allowed, vector<string>& words) {
bool mask[26] = {false};
for (char& c : allowed) {
mask[c - 'a'] = true; // 'a' - 'a' == 0 ==> mask[0]
}
int ret = 0;
for (string& s : words) {
bool exist = true;
for (char& c : s) {
if (!mask[c-'a']) {
//s中有字符不存在于allowed中
exist = false;
break;
}
}
ret += exist; //true == 1
}
return ret;
}
标签:Count,consistent,mask,number,ret,exist,words,allowed,true
From: https://www.cnblogs.com/hql5/p/16869337.html