Parentheses Balance
Parentheses Balance |
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.
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
#include #include #define N 129 int judge(char s[]) { char stack[N];//可以不用此数组,可直接在数组s中操作。 int top = 0; int i, f; f = 1; for(i = 0; s[i] != '\0'; i++){ if(s[i] == '[' || s[i] == '(') stack[top++] = s[i]; else if(top > 0 && ((s[i] == ']' && stack[top-1] == '[') || (s[i] == ')' && stack[top-1] == '('))) top--; else{ f = 0; break; } } if(top != 0) f = 0; return f; } int main() { int n; char s[N]; scanf("%d", &n); gets(s); while(n-- > 0){ gets(s); if(judge(s)) printf("Yes\n"); else printf("No\n"); } return 0; }