P9078题解
P9078 Język polski 题解
看大佬们都提交的 string 字符串,我来交一发 char 代码。
思路
从头开始遍历一遍字符串,分别给元音和辅音开一个累加器,满足是元音就清空辅音,元音加一;反之清空元音,辅音加一,如果其中有一个满足了题目的条件,就让 aei只能算一个满足条件的,在
AC代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=200010;//范围开始开小了调了好久都是70分
ll f,y,sum;
ll ans;
int read(){
int op=1,x=0;
char c=getchar();
while(!isdigit(c)){
if(c=='-') op=-1;
c=getchar();
}
while(isdigit(c)){
x=x*10+c-'0';
c=getchar();
}
return op*x;
}//快读,本题用不到
bool check(char c){
return (c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='y');
}//判断当前字母是否是元音,是返回true,否则返回false
char s[N];
int main(){
scanf("%s",s+1);
int len=strlen(s+1);
for(int i=1;i<=len;i++){
if(check(s[i])){//判断如果是元音就让元音累加器加1,辅音累加器清空
y++;
f=0;
}
else{//如果是辅音与上面相反
f++;
y=0;
}
if(f>=3||y>=3)//如果其中有一个满足题意达到三就让sum改为i-2
sum=i-2;
ans+=sum;
}
printf("%lld\n",ans);
return 0;
}