【题解】CF733A 蚱蜢
题面
前言
字符串练手题
正文
读入字符串不解释
维护一个指针 $ p $,记录完成一次跳跃前的位置下标
跳跃的过程可以转化为:扫描 $ p $ 右方第一个“元音”字母的位置
令这个下标为 $ i $,则有 $ ans= \max \lbrace {i-p} \rbrace $
每次匹配成功后比对 $ ans $,并令 $ p=i $
警示后人:
-
字符串的下标是从 $ 0 $ 开始的,所以指针 $ p $ 的初始值应赋为 $ -1 $
-
不要忽略最后一跳上岸!
代码
#include<iostream>
#include<cstring>
using namespace std;
string s;
int ans;
int main(){
cin>>s;
int p=-1,len=s.length();
for(int i=0;i<len;i++){
if(s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U'||s[i]=='Y'){
ans=max(ans,i-p);
p=i;
}
}
ans=max(ans,len-p);
cout<<ans<<endl;
return 0;
}
后记
云落没有一次 AC,这还是个红题,不开心~
完结撒花!