UVA 673 Parentheses Balance
题意就是判断左右括号是否匹配。用数组模拟栈,左括号就入栈,右括号遇到栈顶是对应的左括号,就将左括号出栈,否则就是NO,字符串结束后,若栈不为空,就NO。水过
#include <stdio.h>
#include <string.h>
int n;
char sb[205];
char stack[205];
int main()
{
scanf("%d", &n);
getchar();
while (n --)
{
int i;
memset(stack, 0, sizeof(stack));
gets(sb);
int t =0;
int len = strlen(sb);
for (i = 0; i < len; i ++)
{
if (sb[i] == '(' || sb[i] =='[')
{
stack[t] = sb[i];
t ++;
}
if (sb[i] == ')')
{
if (stack[t - 1] == '(')
{
stack[t - 1] = '\0';
t --;
}
else
{
stack[t] = sb[i];
t ++;
}
}
if (sb[i] == ']')
{
if (stack[t - 1] == '[')
{
stack[t - 1] = '\0';
t --;
}
else
{
stack[t] = sb[i];
t ++;
}
}
}
if (stack[0] == '\0')
printf("Yes\n");
else
printf("No\n");
}
return 0;
}