-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathprob6-2.c
40 lines (33 loc) · 793 Bytes
/
prob6-2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
file: prob6-2.c
author: David De Potter
description: extra, problem 6, balanced brackets
version: 6.2, using the clib library
*/
#include "../../Functions/clib/clib.h"
int isBalanced(char *s, int len) {
CREATE_ARRAY(char, stack, len, 0);
int top = 0;
for (int i = 0; i < len; i++) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
stack[top++] = s[i];
continue;
}
--top;
if (top < 0
|| (s[i] == ')' && stack[top] != '(')
|| (s[i] == ']' && stack[top] != '[')
|| (s[i] == '}' && stack[top] != '{')) {
free(stack);
return 0;
}
}
free(stack);
return top == 0;
}
int main () {
READ_STR_UNTIL(str, '\n', len);
printf(isBalanced(str, len) ? "YES\n" : "NO\n");
free(str);
return 0;
}