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;
}