CF858C

题意

如果一个字符串同时满足:

1、三个或以上个连着的辅音字母

2、这一段连着的辅音字母不是全部一样的

则这个字符串非法

整个程序都用一个循环来模拟,要满足要求要求可以用一个 num 来统计连续辅音字母的数量,大于等于 33 个辅音字母不一样,输出空格。

另外,我们可以加一个辅音元音判断的程序

int pd(char x){
    for(int i=0; i<5; i++)
        if(x==y[i])//y数组来统计元音
            return 0;//如果是就返回0
    return 1;//辅音返回1
}

上总代码!!!

#include<bits/stdc++.h>
using namespace std;
string s;
int len,num;//len为字符串长度,num来统计连续辅音字母的数量
char y[5]={'a','e','i','o','u'};//y数组来储存元音字母
int pd(char x){//判断是否为辅音字母
    for(int i=0; i<5; i++)//循环枚举看x是否为元音字母
        if(x==y[i])//如果x是元音字母
            return 0;//返回0
    return 1;//返回1代表x为辅音字母
}
int main(){
    getline(cin,s);//输入字符串
    len=s.size();//len存字符串的长度
    num=pd(s[0]);
    /*
    如果返回1则s[0]为辅音字母,辅音字母的数量要+1
    (因为初始为0,函数返回1,num就等于1)
    否则s[0]为元音字母,函数返回0,辅音字母的数量也要为0
    */
    cout<<s[0];//输出第一个字符
    for(int i=1; i<len; i++){//循环模拟
        if(pd(s[i])==0) num=0;//如果s[i]为元音字母,连续辅音字母的数量清空为0
        else{//否则为辅音字母
            ++num;//连续辅音字母数量要“更新”(+1)
            if(num>=3&&!(s[i]==s[i-1]&&s[i-2]==s[i])){//判断是否满足题意
                cout<<' ';//满足要求就输出空格
                num=1;//字符串新开了一段,但开头仍为辅音字母,所以连续辅音字母的数量为1
            }
        }
        cout<<s[i];//原封不动的输出
    }
    return 0;//养成好习惯
}

洛谷讲究学术诚信,请勿复制!

posted @   naroto2022  阅读(3)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
战斗是残酷的,无法做出多余的考虑!