zoukankan      html  css  js  c++  java
  • Codeforces 938.A Word Correction

    A. Word Correction
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Victor tries to write his own text editor, with word correction included. However, the rules of word correction are really strange.

    Victor thinks that if a word contains two consecutive vowels, then it's kinda weird and it needs to be replaced. So the word corrector works in such a way: as long as there are two consecutive vowels in the word, it deletes the first vowel in a word such that there isanother vowel right before it. If there are no two consecutive vowels in the word, it is considered to be correct.

    You are given a word s. Can you predict what will it become after correction?

    In this problem letters a, e, i, o, u and y are considered to be vowels.

    Input

    The first line contains one integer n (1 ≤ n ≤ 100) — the number of letters in word s before the correction.

    The second line contains a string s consisting of exactly n lowercase Latin letters — the word before the correction.

    Output

    Output the word s after the correction.

    Examples
    input
    Copy
    5
    weird
    output
    werd
    input
    Copy
    4
    word
    output
    word
    input
    Copy
    5
    aaeaa
    output
    a
    Note

    Explanations of the examples:

    1. There is only one replace: weird  werd;
    2. No replace needed since there are no two consecutive vowels;
    3. aaeaa  aeaa  aaa  aa  a.

    题目大意:给一个字符串,如果有两个连续的元音字母,则删掉后一个,一直进行这种操作,求最后的字符串.

    分析:一个一个去枚举删就比较麻烦了,一个比较好的做法是用栈维护,枚举第i个位置,与栈顶的字符比较,看是否符合要求.最后输出栈里的字符串就好了.

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include <cmath>
    
    using namespace std;
    
    typedef long long LL;
    
    char s[110],ans[110];
    int tot,n;
    
    bool check(char a,char b)
    {
        bool flag1 = false,flag2 = false;
        if (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u' || a == 'y')
            flag1 = true;
        if (b == 'a' || b == 'e' || b == 'i' || b == 'o' || b == 'u' || b == 'y')
            flag2 = true;
        if (flag1 && flag2)
            return true;
        return false;
    }
    
    int main()
    {
        scanf("%d",&n);
        scanf("%s",s + 1);
        for (int i = 1; i <= n; i++)
        {
            if (!tot)
                ans[++tot] = s[i];
            else
            {
                if (!check(ans[tot],s[i]))
                    ans[++tot] = s[i];
            }
        }
        for (int i = 1; i <= tot; i++)
            printf("%c",ans[i]);
    
        return 0;
    }
  • 相关阅读:
    alert
    自定义基类装载数据模块显示到dataGrid
    关于dataGrid查询按钮的实现
    如何查看oracle用户具有的权限和角色 大风起
    LoadRunner使用手册 大风起
    电脑蓝屏了,教你一招保证恢复 大风起
    oracle如何查看当前有哪些用户连接到数据库 大风起
    apache+tomcat整合(动静分离) 大风起
    cdn技术浅谈 大风起
    Tomcat性能优化总结 大风起
  • 原文地址:https://www.cnblogs.com/zbtrs/p/8451877.html
Copyright © 2011-2022 走看看