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;
    }
  • 相关阅读:
    【秒杀系统】零基础上手秒杀系统(三):抢购接口隐藏 + 单用户限制频率
    【秒杀系统】零基础上手秒杀系统(二):令牌桶限流 + 再谈超卖
    【秒杀系统】从零开始打造简易秒杀系统(一):防止超卖
    EditPlus快捷键
    ant的安装及项目的发布
    Java 中类型转换
    navicat 结合快捷键
    go中安装Beego不成功笔记
    Excel中添加下拉框
    在Excel中把横行与竖列进行置换、打勾号
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5137631.html
Copyright © 2011-2022 走看看