出题人亲笔
这是一道很简单的字符串题。
按题意模拟即可。

#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 条评论

目前还没有评论...