题解 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;
}
posted @   HappyBobb  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示