文章目录
- 1. 题目
- 2. 解题
1. 题目
子字符串 是字符串中的一个连续(非空)的字符序列。
元音子字符串 是 仅 由元音('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 仅由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-vowel-substrings-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 暴力法
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<char> 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阿明),一起加油、一起学习进步!