题解 CF938A 【Word Correction】
STL大法好,602ms,速度第4
代码来了,用的是STL库的string和布尔类型flag的搭配
代码有注释
#include <iostream>
#include <cstring>//string头文件
using namespace std;
int main()
{
int n;
bool flag = false;//初始值为false
string str;
cin >> n >> str;
while(!flag)//不会死循环的
{
flag = true;
for(string::iterator it = str.begin(); it != str.end(); it++)//string迭代器
{
if(*it == 'a' || *it == 'e' || *it == 'i' || *it == 'o' || *it == 'u' || *it == 'y')//判断是否元音,用*访问迭代器指向的那个数据
{
if(*(it + 1) == 'a' || *(it + 1) == 'e' || *(it + 1) == 'i' || *(it + 1) == 'o' || *(it + 1) == 'u' || *(it + 1) == 'y')
{
str.erase(it + 1);//删除it + 1位置的数据
}
}
}
for(int i = 0; i <= str.length() - 1; i++)//这里不用迭代器了,length读取string长度
{
if(str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' || str[i] == 'y')
{
if(str[i + 1] == 'a' || str[i + 1] == 'e' || str[i + 1] == 'i' || str[i + 1] == 'o' || str[i + 1] == 'u' || str[i + 1] == 'y')
{
flag = false;//如果还有两个相邻元音,flag等于false
break;//break不能少
}
else
{
flag = true;//否则flag变为true
}
}
else
{
flag = true;//否则flag变为true
}
//如果flag为true的话会停止循环
}
}
cout << str << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现