3月14日刷题:LeetCode 3305 元音辅音字符计数I

给你一个字符串 word 和一个 非负 整数 k

返回 word 的 子字符串 中,每个元音字母('a''e''i''o''u'至少 出现一次,并且 恰好 包含 k 个辅音字母的子字符串的总数。

 

示例 1:

输入: word = "aeioqq", k = 1

输出: 0

解释:

不存在包含所有元音字母的子字符串。

示例 2:

输入: word = "aeiou", k = 0

输出: 1

解释:

唯一一个包含所有元音字母且不含辅音字母的子字符串是 word[0..4],即 "aeiou"

示例 3:

输入: word = "ieaouqqieaouqq", k = 1

输出: 3

解释:

包含所有元音字母并且恰好含有一个辅音字母的子字符串有:

  • word[0..5],即 "ieaouq"
  • word[6..11],即 "qieaou"
  • word[7..12],即 "ieaouq"

 

提示:

  • 5 <= word.length <= 250
  • word 仅由小写英文字母组成。
  • 0 <= k <= word.length - 5
class Solution {
public:
    int countOfSubstrings(string word, int k) {
        int res=0,consonant,n=word.size();
        unordered_set<char> hash={'a','e','i','o','u'},vowel;
        for(int i=0;i<n;++i){
            vowel.clear();
            consonant=0;
            for(int j=i;j<n;++j){
                if(hash.find(word[j])==hash.end()) consonant++;
                else vowel.insert(word[j]);
                if(vowel.size()==5&&consonant==k) res++;
            }
        }
        return res;
    }
};

用时:77ms

内存:15.48MB