元音辅音字符串计数 II
给你一个字符串 word 和一个 非负 整数 k。
返回 word 的子字符串中,每个元音字母(’a’、’e’、’i’、’o’、’u’)至少 出现一次,并且 恰好 包含 k 个辅音字母的子字符串的总数。
输入:word = “aeioqq”, k = 1
输出:0
解释:
不存在包含所有元音字母的子字符串。
输入:word = “aeiou”, k = 0
输出:1
解释:
唯一一个包含所有元音字母且不含辅音字母的子字符串是 word[0..4],即 “aeiou”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| var countOfSubstrings = function (word, k) { const getAns = (word, k) => { const map = new Map(); const s = ['a', 'e', 'i', 'o', 'u']; let count = 0; let ans = 0; let l = 0, cur = 0; for (let i = 0; i < word.length; i++) { if (s.indexOf(word[i]) >= 0) { map.set(word[i], map.get(word[i]) + 1 || 1); } else { count++; } while (count >= k && map.size == 5) { if (s.indexOf(word[l]) >= 0) { map.set(word[l], map.get(word[l]) - 1); if (map.get(word[l]) == 0) { map.delete(word[l]); } } else { count--; } l++; } ans += l; } return ans; } return getAns(word, k) - getAns(word, k + 1); };
|