A - Word Correction 思维

传送门
思路:认真读题 是 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;
}

发布了241 篇原创文章 · 获赞 8 · 访问量 4853

猜你喜欢

转载自blog.csdn.net/weixin_43960370/article/details/103432201