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
Inputcopy | Outputcopy |
---|---|
() | YES |
Sample 2
Inputcopy | Outputcopy |
---|---|
()[] | YES |
Sample 3
Inputcopy | Outputcopy |
---|---|
[()] | YES |
Sample 4
Inputcopy | Outputcopy |
---|---|
[) | 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;
}