1 条题解
-
0
自动搬运
来自洛谷,原作者为

2081a
过去无法挽回,未来仍可改变搬运于
2025-08-24 22:45:11,当前版本为作者最后更新于2023-11-07 14:37:25,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
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; }
- 1
信息
- ID
- 8366
- 时间
- 250ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者