给你一个由不同字符组成的字符串 allowed
和一个字符串数组 words
。如果一个字符串的每一个字符都在 allowed
中,就称这个字符串是 一致字符串 。
请你返回 words
数组中 一致字符串 的数目。
示例 1:
输入:allowed = "ab", words = ["ad","bd","aaab","baa","badab"] 输出:2 解释:字符串 "aaab" 和 "baa" 都是一致字符串,因为它们只包含字符 'a' 和 'b' 。
示例 2:
输入:allowed = "abc", words = ["a","b","c","ab","ac","bc","abc"] 输出:7 解释:所有字符串都是一致的。
示例 3:
输入:allowed = "cad", words = ["cc","acd","b","ba","bac","bad","ac","d"] 输出:4 解释:字符串 "cc","acd","ac" 和 "d" 是一致字符串。
提示:
1 <= words.length <= 104
1 <= allowed.length <= 26
1 <= words[i].length <= 10
allowed
中的字符 互不相同 。words[i]
和allowed
只包含小写英文字母。
class Solution:
def countConsistentStrings(self, allowed: str, words: List[str]) -> int:
res = 0
chars = set(allowed)
for word in words:
find = True
for c in word:
if c not in chars:
find = False
break
if find:
res += 1
return res
class Solution {
public int countConsistentStrings(String allowed, String[] words) {
boolean[] chars = new boolean[26];
for (char c : allowed.toCharArray()) {
chars[c - 'a'] = true;
}
int res = 0;
for (String word : words) {
boolean find = true;
for (char c : word.toCharArray()) {
if (!chars[c - 'a']) {
find = false;
break;
}
}
if (find) {
++res;
}
}
return res;
}
}
class Solution {
public:
int countConsistentStrings(string allowed, vector<string>& words) {
vector<bool> chars(26, false);
for (char c : allowed) {
chars[c - 'a'] = true;
}
int res = 0;
for (string word : words) {
bool find = true;
for (char c : word) {
if (!chars[c - 'a']) {
find = false;
break;
}
}
if (find) ++res;
}
return res;
}
};
func countConsistentStrings(allowed string, words []string) int {
chars := [26]bool{}
for _, c := range allowed {
chars[c-'a'] = true
}
res := 0
for _, word := range words {
find := true
for _, c := range word {
if !chars[c-'a'] {
find = false
break
}
}
if find {
res++
}
}
return res
}