- 题解
JR2147483648 题解
- @ 2026-10-6 16:43:50
出题人亲笔
这是一道很简单的字符串题。
按题意模拟即可。
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main(){
cin>>n;
while(n--){
cin>>s;
string s1;
s1+=s[0];
int len=s.size();
bool f=false;
if(s[0]!='a'&&s[0]!='e'&&s[0]!='i'&&s[0]!='o'&&s[0]!='u'&&s[0]!='A'&&s[0]!='E'&&s[0]!='I'&&s[0]!='O'&&s[0]!='U') f=1;//判断第一个是否为辅音,如果是下一个连着的辅音就不用选了。
if(len<=3){//小于等于3便直接输出
cout<<s<<'\n';
continue;
}
for(int i=1;i<len;i++){//第零个已经处理过了所以从一开始
if(s[i]!='a'&&s[i]!='e'&&s[i]!='i'&&s[i]!='o'&&s[i]!='u'&&s[i]!='A'&&s[i]!='E'&&s[i]!='I'&&s[i]!='O'&&s[i]!='U'){//是辅音
if(f==0) s1+=s[i],f=1;//是第奇数个辅音,就将其加进去并标记
else f=0;//是偶数个已经过了,并清除标记
}
else f=0; //下一个是元音的话也要清除标记
}
if(s1.size()<3) cout<<s<<'\n';//如果缩写小于3就直接输出
else cout<<s1<<'\n'; //否则输出缩写
}
}
0 条评论
目前还没有评论...