正文
♦最坏时间复杂度:\(\mathcal{O}(\lvert S\rvert)\)
本题十分简单,但请注意两个条件要同时满足。
因为要求分割的次数越少越好,所以只要连续的辅音字母长度不大于 2 就不需要分割。
由于辅音字母太多,只需要标记元音字母即可。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
bool yuan[505];//记录元音字母
int cnt;//记录连续辅音个数
string s;
int main(){
ios::sync_with_stdio(false),cin.tie(0);
yuan['a']=yuan['i']=yuan['u']
=yuan['o']=yuan['e']=1;//记录元音字母
cin>>s;
for(int i=0;i<s.size();i++){
if(!yuan[s[i]]) cnt++;//如果是辅音字母,将cnt加1
else cnt=0;//如果是元音字母,将累计的cnt归零
if(cnt>=3&&(s[i]!=s[i-1]||s[i]!=s[i-2]))
cout<<" ",cnt=1;//如果两个条件都满足了,分割
cout<<s[i];
}
}
后附
日志
v1.0 on 2023.04.29: 发布
标签:include,int,题解,字母,858,CodeForces,元音,yuan,辅音 From: https://www.cnblogs.com/wanguan/p/17364205.html