【题解】CF733A 蚱蜢

题面

题目传送门

前言

字符串练手题

正文

读入字符串不解释

维护一个指针 $ p $,记录完成一次跳跃前的位置下标

跳跃的过程可以转化为:扫描 $ p $ 右方第一个“元音”字母的位置

令这个下标为 $ i $,则有 $ ans= \max \lbrace {i-p} \rbrace $

每次匹配成功后比对 $ ans $,并令 $ p=i $

警示后人:

  1. 字符串的下标是从 $ 0 $ 开始的,所以指针 $ p $ 的初始值应赋为 $ -1 $

  2. 不要忽略最后一跳上岸!

代码

#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,这还是个红题,不开心~

完结撒花!

posted @ 2024-11-20 22:25  sunxuhetai  阅读(10)  评论(0)    收藏  举报