「每日LeetCode」2021年11月12日

本文最后更新于:2023年3月19日 晚上

Lt2062. 统计字符串中的元音子字符串

2062. 统计字符串中的元音子字符串

子字符串 是字符串中的一个连续(非空)的字符序列。
元音子字符串 由元音(’a’、’e’、’i’、’o’ 和 ‘u’)组成的一个子字符串,且必须包含 全部五种 元音。
给你一个字符串 word ,统计并返回 word 中 元音子字符串的数目

示例 1:
输入:word = “aeiouu” 输出:2 解释:下面列出 word 中的元音子字符串(斜体加粗部分): - “aeiou_u” - “**_aeiouu
*示例 2:\*
**输入:
word = “unicornarihan” 输出:0 解释:word 中不含 5 种元音,所以也不会存在元音子字符串。
示例 3:
输入:word = “cuaieuouac” 输出:7 解释:下面列出 word 中的元音子字符串(斜体加粗部分): - “c*uaieuo_uac” - “c*uaieuouac” - “cuaieuouac” - “cuaieuouac” - “cuaieuouac” - “cuaieuouac” - “cuaieuoua_c”
示例 4:
输入:word = “bbaeixoubb” 输出:0 解释:所有包含全部五种元音的子字符串都含有辅音,所以不存在元音子字符串。

提示:

  • 1 <= word.length <= 100
  • word 仅由小写英文字母组成

思路

双重遍历,size 记录是否已经全部出现即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {string} word
* @return {number}
*/
var countVowelSubstrings = function (word) {
const arr = ["a", "e", "u", "i", "o"];
let res = 0;
for (let i = 0; i < word.length; i++) {
let set = new Set();
for (let j = i; j < word.length; j++) {
const char = word[j];
if (arr.includes(char)) set.add(char);
else break;
if (set.size === 5) res++;
}
}
return res;
};