- 1. 题目
- 2. 解题
子字符串 是字符串中的一个连续(非空)的字符序列。
元音子字符串 是 仅 由元音('a'、'e'、'i'、'o' 和 'u')组成的一个子字符串,且必须包含 全部五种 元音。
给你一个字符串 word ,统计并返回 word 中 元音子字符串的数目 。
示例 1: 输入:word = "aeiouu" 输出:2 解释:下面列出 word 中的元音子字符串(斜体加粗部分): - "aeiouu" - "aeiouu" 示例 2: 输入:word = "unicornarihan" 输出:0 解释:word 中不含 5 种元音,所以也不会存在元音子字符串。 示例 3: 输入:word = "cuaieuouac" 输出:7 解释:下面列出 word 中的元音子字符串(斜体加粗部分): - "cuaieuouac" - "cuaieuouac" - "cuaieuouac" - "cuaieuouac" - "cuaieuouac" - "cuaieuouac" - "cuaieuouac" 示例 4: 输入:word = "bbaeixoubb" 输出:0 解释:所有包含全部五种元音的子字符串都含有辅音,所以不存在元音子字符串。 提示: 1 <= word.length <= 100 word 仅由小写英文字母组成
2. 解题来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-vowel-substrings-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
- 暴力法
class Solution {
public:
int countVowelSubstrings(string word) {
int ans = 0, a = 0, e = 0, i = 0, o = 0, u = 0, n = word.size();
unordered_set set = {'a','e','i','o','u'};
for(int j = 0; j < n-4; ++j)
{
if(!set.count(word[j]))
continue;
a=e=i=o=u=0;
for(int k = j; k < n; ++k)
{
if(!set.count(word[k]))
break;
else
{
if(word[k]=='a') a++;
else if(word[k]=='e') e++;
else if(word[k]=='i') i++;
else if(word[k]=='o') o++;
else if(word[k]=='u') u++;
if(a&&e&&i&&o&&u) ans++;
}
}
}
return ans;
}
};
8 ms 6.2 MB C++ 2021/11/07 14:55
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!



