#include <iostream>
#include <string>
#include <unordered_set>
#include <cctype>
#include <cmath>
using namespace std;
unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'};
inline bool isVowel(const char c)
{
return vowels.find(c) != vowels.end() ? true : false;
}
inline unsigned long long possibleWords(unsigned int pre, unsigned int post)
{
return (post+1) * (pre+1);
}
int main()
{
string input;
cin >> input;
uint16_t vowelCount = 0;
uint16_t consonantCount = 0;
uint16_t prev_idx = 0, idx = 0;
uint16_t len = input.size();
uint16_t allWords = 0;
if (len < 3)
{
cout << 0;
return 0;
}
for (char c : input)
{
if (isVowel(c))
{
++vowelCount;
consonantCount = 0;
}
else
{
++consonantCount;
vowelCount = 0;
}
if (vowelCount >= 3 || consonantCount >= 3)
{
allWords += possibleWords(idx-prev_idx-2, len - idx - 1);
prev_idx = idx - 1;
}
++idx;
}
cout << allWords;
}
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <iostream> #include <string> #include <unordered_set> #include <cctype> #include <cmath> using namespace std; unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'}; inline bool isVowel(const char c) { return vowels.find(c) != vowels.end() ? true : false; } inline unsigned long long possibleWords(unsigned int pre, unsigned int post) { return (post+1) * (pre+1); } int main() { string input; cin >> input; uint16_t vowelCount = 0; uint16_t consonantCount = 0; uint16_t prev_idx = 0, idx = 0; uint16_t len = input.size(); uint16_t allWords = 0; if (len < 3) { cout << 0; return 0; } for (char c : input) { if (isVowel(c)) { ++vowelCount; consonantCount = 0; } else { ++consonantCount; vowelCount = 0; } if (vowelCount >= 3 || consonantCount >= 3) { allWords += possibleWords(idx-prev_idx-2, len - idx - 1); prev_idx = idx - 1; } ++idx; } cout << allWords; } |
English