传送门
思路:认真读题 是 a, e, i, o, u and y 真坑。一开始以为是原因,wa了5发 想了2个解法,供君选择。
栈解法
#include<iostream>
#include<stack>
using namespace std;
char s[1000];
stack<char>sk;
int vis[200];
int main()
{
int n;
vis['y'] = 1,vis['a'] = 1, vis['e'] = 1, vis['i'] = 1, vis['o'] = 1, vis['u'] = 1;
cin >> n;
cin >> s;
for(int i = 0; i < n; i++)
{
if(!sk.empty())
{
char t;
t = sk.top();
if(vis[t] && vis[s[i]])
continue;
else
{
sk.push(s[i]);
}
}
else
{
sk.push(s[i]);
}
}
char a[200];
int cnt = 0;
while(!sk.empty())
{
a[cnt++] = sk.top();
sk.pop();
}
for(int i = cnt - 1;i >= 0;i--)
cout << a[i];
cout << endl;
return 0;
}
简单的string用法
#include<iostream>
using namespace std;
string s;
string s1, s2;
int vis[200];
int main()
{
vis['y'] = 1,vis['a'] = 1,vis['e'] = 1,vis['i'] = 1,vis['o'] = 1,vis['u'] = 1;
int n;
cin >> n;
cin >> s;
for(int i = 0;i < s.size() - 1;i++)
{
if(vis[s[i]] && vis[s[i + 1]])
{
//cout << s << endl;
s.erase(i + 1,1);
//cout << s << endl;
i --;
}
}
cout << s << endl;
return 0;
}