关于栈stack的练习

Easy - Parenthesis Matching

You are given a string consisting of parentheses () and [].

A string of this type is said to be correct:

(a) if it is the empty string

(b) if A and B are correct, AB is correct,

(c) if A is correct, (A) and [A] is correct.

Write a program that takes a sequence of strings of this type and check their correctness.

Your program can assume that the maximum string length is 128.

Data guaranteed to contain only '(',')','[' or ']' in a row

Input

One-line string

Output

one row contain "YES"(Without quotes) if the given string it is a correct sequence otherwise "NO"(Without quotes)

Sample 1

InputcopyOutputcopy
()
YES

Sample 2

InputcopyOutputcopy
()[]
YES

Sample 3

InputcopyOutputcopy
[()]
YES

Sample 4

InputcopyOutputcopy
[)
NO

Note

You can output answers with any combination of case and case like "yEs" or "nO" and so on

#include <bits/stdc++.h>
using namespace std;
bool ELUOSI(pair<string,int>HUAWEI,pair<string,int>IPHONE)
{
    if (HUAWEI.second==IPHONE.second)
    {
        return HUAWEI.first<IPHONE.first;
    }
    return HUAWEI.second>IPHONE.second;
}
int main()
{
    int GUAILING;
    cin >>GUAILING;
    vector<pair<string, int>>WUKELAN(GUAILING);
    for (int YUANSHEN=0;YUANSHEN<GUAILING;++YUANSHEN)
    {
        cin >>WUKELAN[YUANSHEN].first>>WUKELAN[YUANSHEN].second;
    }
    sort(WUKELAN.begin(),WUKELAN.end(),ELUOSI);
    for (int YUANSHEN=0;YUANSHEN<GUAILING;++YUANSHEN)
    {
        cout <<WUKELAN[YUANSHEN].first<<endl;
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值