The Indian Engineer

Problem 1684 Count the Number of Consistent Strings

Posted on 3 mins

String Array Hash-Set Hash-Map Count

Problem Statement

Link - Problem 1684

Question

You are given a string allowed consisting of distinct characters and an array of strings words. A string is consistent if all characters in the string appear in the string allowed.

Return the number of consistent strings in the array words.

Example 1

Input: allowed = "ab", words = ["ad","bd","aaab","baa","badab"]
Output: 2
Explanation: Strings "aaab" and "baa" are consistent since they only contain characters 'a' and 'b'.

Example 2

Input: allowed = "abc", words = ["a","b","c","ab","ac","bc","abc"]
Output: 7
Explanation: All strings are consistent.

Example 3

Input: allowed = "cad", words = ["cc","acd","b","ba","bac","bad","ac","d"]
Output: 4
Explanation: Strings "cc", "acd", "ac", and "d" are consistent.

Constraints

Solution

class Solution {
public:
    int countConsistentStrings(string allowed, vector<string>& words) {
        std::ios::sync_with_stdio(false);
        vector<int>s(26,0);
        for(int i =0; i<allowed.size(); i++){
            s[allowed[i]-'a']++;
        }
        int count = 0;
        bool flag = true;
        for(const auto& word:words){
            flag = true;
            for(int i = 0; i<word.size(); i++){
                if(s[word[i]-'a'] == 0){
                    flag = false;
                    break;
                }
            }
            if(flag)
                count++;
        }
        return count;

    }
};

Complexity Analysis

| Algorithm       | Time Complexity | Space Complexity |
| --------------- | --------------- | ---------------- |
| frequency array | O(n)            | O(1)             |
| Counting        | O(nm)           | O(1)             |

Explanation

1. Intuition

Lets try to understand what the problem is asking.

2. Implementation

- Initialize a frequency array `s` of size 26 with all elements as 0.
- Iterate over the string `allowed` and increment the frequency of the character in the frequency array.
- Initialize a variable `count` to store the count of consistent strings.
- Initialize a boolean variable `flag` to check if the string is consistent.
- Iterate over the array `words` and for each word check if all the characters are present in the string `allowed`.
  - If any character is not present then set the flag to false and break.
- If the flag is true then increment the count.
- Return the count.