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;
    }
  • 相关阅读:
    初始化生成linux sysfs(8)
    内存延迟监控系统组件
    数组代码First Missing Positive
    类文件Spring中空值的写法java教程
    状态键盘完美适应iOS中的键盘高度变化
    框架绑定JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
    域编码jquery的AJAX跨域请求及跨域请求的原理
    数据格式利用GSON接卸JSON数据
    网元查看一个无厘头的core dump问题定位
    类型应用oracle如何显示毫秒?
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5137631.html
Copyright © 2011-2022 走看看