题目大意:去掉元音字母
题目不难,但要考虑的情况很多,标点符号后面要有一个空格,开头不能有空格,不能连续有两个空格。
感觉自己程序写得好烦,但在我不确定的情况下居然ac了!
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<deque>
#include<string>
#include<string.h>
#include<vector>
#include<stack>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<map>
#include<set>
#include<time.h>
#include<bitset>
#include<list>
using namespace std;
string s;
int a[27];
int main(){
a[0]=1;
a['E'-'A']=1;
a['I'-'A']=1;
a['O'-'A']=1;
a['U'-'A']=1;
string ans="";
while (cin>>s)
{
string c="";
int f=0;int i;
for (i=0;i<s.size();i++)
{if (s[i]==','||s[i]=='.'||s[i]=='?')
{f=1;break;}else if (!a[s[i]-'A']) c+=s[i],a[s[i]-'A']=1;}
if (c!="") ans+=c,ans+=" "; else if (ans!=""&&ans[ans.size()-1]!=' ') ans+=' ';
if (f)
{if (ans[ans.size()-1]==' ') ans=ans.substr(0,ans.size()-1);ans+=s[i],ans+=' ';}
}
if (ans[ans.size()-1]==' ') ans=ans.substr(0,ans.size()-1);
cout<<ans;
return 0;
}