公司网站注意事项,网站服务器和ftp空间,哪个网站可以免费看小说不收费,上海高品质网站建设公司5919. 所有子字符串中的元音
给你一个字符串 word #xff0c;返回 word 的所有子字符串中 元音的总数 #xff0c;元音是指 ‘a’、‘e’、‘i’、‘o’ 和 ‘u’ 。
子字符串 是字符串中一个连续#xff08;非空#xff09;的字符序列。
注意#xff1a;由于对 word …5919. 所有子字符串中的元音
给你一个字符串 word 返回 word 的所有子字符串中 元音的总数 元音是指 ‘a’、‘e’、‘i’、‘o’ 和 ‘u’ 。
子字符串 是字符串中一个连续非空的字符序列。
注意由于对 word 长度的限制比较宽松答案可能超过有符号 32 位整数的范围。计算时需当心。
示例 1输入word aba
输出6
解释
所有子字符串是a、ab、aba、b、ba 和 a 。
- b 中有 0 个元音
- a、ab、ba 和 a 每个都有 1 个元音
- aba 中有 2 个元音
因此元音总数 0 1 1 1 1 2 6 。示例 2输入word abc
输出3
解释
所有子字符串是a、ab、abc、b、bc 和 c 。
- a、ab 和 abc 每个都有 1 个元音
- b、bc 和 c 每个都有 0 个元音
因此元音总数 1 1 1 0 0 0 3 。示例 3输入word ltcd
输出0
解释ltcd 的子字符串均不含元音。示例 4输入word noosabasboosa
输出237
解释所有子字符串中共有 237 个元音。
提示
1 word.length 10510^5105word 由小写英文字母组成
解题思路
因为如果出现了元音那么所有包含该元音字母的子串都会对元音的总数贡献等于子串数量的元音个数例如aba第一个元音a将会对子串aab和aba3个子串贡献3个元音而第二个元音a将会对子串aba和aba3个子串贡献3个元音所以我们只需要统计每个元音字母可以组成多个子串即可。我们可以统计元音字母左右两边的字符个数利用排列的知识可得可组成子串的个数为(i1)*(n-i)。
代码
class Solution {
public:long long countVowels(string word) {long long res(0);long long n(word.size());for (long long i 0; i n; i) {if (word[i]a||word[i]i||word[i]e||word[i]o||word[i]u)res(i1)*(n-i);}return res;}
};