#include <iostream>
#include <string>
using namespace std;
int segment_p[200007];
int segment_k[200007];
bool is_vowel(char z)
{
if (z == 'a' || z == 'e' || z == 'i' || z == 'o' || z == 'u' || z == 'y')
return true;
return false;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie();
string s;
cin >> s;
int n = s.size();
if (n < 3)
{
cout << 0;
return 0;
}
int segment_size = 1;
bool vowel = 0;
if (is_vowel(s[0]))
vowel = 1;
int segment_num = 0;
for (int i = 1; i < n; i++)
{
bool now_vowel = is_vowel(s[i]);
if (vowel && now_vowel)
segment_size++;
else if (!vowel && !now_vowel)
segment_size++;
else
segment_size = 1;
if (segment_size >= 3)
{
segment_p[segment_num] = i-2;
segment_k[segment_num] = i;
segment_num++;
}
vowel = now_vowel;
}
if (segment_num == 0)
{
cout << 0;
return 0;
}
long long w = 0;
for (int i = 0; i < segment_num-1; i++)
{
int p = segment_p[i];
int k = segment_k[i];
w += (p+1)*(segment_p[i+1]+2 - k);
}
w += (segment_p[segment_num-1]+1)*(n - segment_k[segment_num-1]);
cout << w;
}
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 60 61 62 63 64 65 66 | #include <iostream> #include <string> using namespace std; int segment_p[200007]; int segment_k[200007]; bool is_vowel(char z) { if (z == 'a' || z == 'e' || z == 'i' || z == 'o' || z == 'u' || z == 'y') return true; return false; } int main() { ios_base::sync_with_stdio(0); cin.tie(); string s; cin >> s; int n = s.size(); if (n < 3) { cout << 0; return 0; } int segment_size = 1; bool vowel = 0; if (is_vowel(s[0])) vowel = 1; int segment_num = 0; for (int i = 1; i < n; i++) { bool now_vowel = is_vowel(s[i]); if (vowel && now_vowel) segment_size++; else if (!vowel && !now_vowel) segment_size++; else segment_size = 1; if (segment_size >= 3) { segment_p[segment_num] = i-2; segment_k[segment_num] = i; segment_num++; } vowel = now_vowel; } if (segment_num == 0) { cout << 0; return 0; } long long w = 0; for (int i = 0; i < segment_num-1; i++) { int p = segment_p[i]; int k = segment_k[i]; w += (p+1)*(segment_p[i+1]+2 - k); } w += (segment_p[segment_num-1]+1)*(n - segment_k[segment_num-1]); cout << w; } |
English