zoukankan      html  css  js  c++  java
  • SGU 538. Emoticons 水题

    538. Emoticons

    题目连接:

    http://acm.sgu.ru/problem.php?contest=0&problem=538

    Description

    A berland national nanochat Bertalk should always stay up-to-date. That's why emoticons highlighting was decided to be introduced. As making emoticons to be highlighted is not exactly the kind of task one performs everyday but this task had to be done as soon as possible, the following simple rule was decided to be introduced: a round opening or closing bracket be considered part of an emoticon if:
    this is an opening bracket and there exists the nearest bracket following to the right. The nearest round bracket to the right should be a closing bracket and there shouldn't be anything between the brackets but spaces and Latin letters,
    or else it can be a closing bracket and there exists the nearest round bracket following to the left. The nearest round bracket to the left should be an opening bracket. Besides, there shouldn't be anything between the brackets but spaces and Latin letters.

    If a bracket doesn't satisfy the conditions, it is considered a part of an emoticon. For example, let's consider the string "Hi:) (it is me) I have bad news:-((". In the string only the brackets that outline "it is me" aren't emoticons. Note that an opening bracket immediatelly followed by a closing bracket, i.e. "()", are not parts of emoticons by definition.

    Your task is to print the number of brackets that are parts of emoticons in the given string.

    Input

    The input data consist of a single non-empty string. The length of the string does not exceed 105 characters. The string consists of lowercase and uppercase Latin letters, spaces, round brackets and punctuation marks: "-", ":", ",", ";". The string does not begin with and does not end with a space.

    Output

    Print a single number — the required number of brackets that are part of emoticons.

    Sample Input

    Hi:) (it is me) I have bad news:-((

    Sample Output

    3

    Hint

    题意

    两个括号内如果只有英文字母 空格的话,就说明这个是正常的括号

    否则就是表情括号

    问你表情括号有多少个

    题解:

    直接暴力扫一遍就好了,水题

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    string s;
    int check(char c)
    {
        if(c=='(')return 1;
        if(c==')')return 2;
        if(c==' ')return 3;
        if(c<='Z'&&c>='A')return 3;
        if(c<='z'&&c>='a')return 3;
        return 4;
    }
    int main()
    {
        getline(cin,s);
        int ans = 0;
        int flag = 0;
        for(int i=0;i<s.size();i++)
        {
            if(check(s[i])==2)
            {
                if(flag == 1)
                    flag = 0;
                else
                    ans += 1;
            }
            else if(check(s[i])==1)
            {
                if(flag==1)
                    ans++;
                flag = 1;
            }
            else if(check(s[i])==3)
                continue;
            else if(check(s[i])==4)
            {
                if(flag==1)
                    ans++;
                flag = 0;
            }
        }
        cout<<ans+flag<<endl;
    }
  • 相关阅读:
    跨域上传图片的尝试过程,最终成功了。哈哈
    老子再也不加什么所谓的技术群了,顶撞群主的话,就被踢了。
    开发使用的插件
    设计原则记录
    程序员修神之路--redis做分布式锁可能不那么简单
    程序员过关斩将--面试官再问你Http请求过程,怼回去!
    程序员修神之路--问世间异步为何物?
    程序员修神之路--提高网站的吞吐量
    程序员过关斩将--你的业务是可变的吗(福利你领了吗)
    程序员修神之路--🤠分布式高并发下Actor模型如此优秀🤠
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5137631.html
Copyright © 2011-2022 走看看