Skip to content

Latest commit

 

History

History

1684.Count the Number of Consistent Strings

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

English Version

题目描述

给你一个由不同字符组成的字符串 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 只包含小写英文字母。

解法

Python3

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

Java

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;
    }
}

C++

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;
    }
};

Go

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
}

...