UVa 673 Parentheses Balance (栈)
阿里云国际版折扣https://www.yundadi.com |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
673 - Parentheses Balance
Time limit: 3.000 seconds
You are given a string consisting of parentheses () and []. A string of this type is said to be correct:
if it is the empty string
(b)
if A and B are correct, AB is correct,
(c)
(A
) and
[A
]
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.
Input
The file contains a positive integer
n
and a sequence of
n
strings of parentheses
()
and
[]
, one string a line.
Output
A sequence of
Yes
or
No
on the output file.
Sample Input
3
([])
(([()])))
([()[]()])()
Sample Output
Yes
No
Yes
技巧:在栈底加一个元素,减少代码量。
完整代码:
/*0.029s*/
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
stack<char> s;
char str[130];
int main(void)
{
int t;
scanf("%d", &t);
getchar();
while (t--)
{
gets(str);
int len = strlen(str);
if (len & 1)
puts("No");
else
{
if (!s.empty())
s.pop();
s.push('0');///“记号”
for (int i = 0; i < len; ++i)
{
if (str[i] == '(' || str[i] == '[')
s.push(str[i]);
else if (str[i] == ')')
{
if (s.top() == '(')
s.pop();
else
{
s.push('1');
break;
}
}
else/// ']'
{
if (s.top() == '[')
s.pop();
else
{
s.push('1');
break;
}
}
}
puts(s.top() == '0' ? "Yes" : "No");
}
}
return 0;
}
阿里云国际版折扣https://www.yundadi.com |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |