forked from kanchanachathuranga/Hacktoberfest-2022-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidate_paranthesis.c
97 lines (91 loc) · 2.33 KB
/
validate_paranthesis.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
struct stack {
char data[100];
};
void push(struct stack *s,char c){
int len=strlen(s->data);
s->data[len]=c;
s->data[len+1]='\0';
}
void pop(struct stack *s){
int len=strlen(s->data);
s->data[len-1]='\0';
}
int validateParantheses(char * string){
struct stack s;
s.data[0]='\0';
int len=strlen(string);
for(int i=0;i<len;i++){
if(string[i]=='(' || string[i]=='{'||string[i]=='['){
push(&s,string[i]);
}
else if(string[i]==')' || string[i]=='}'||string[i]==']'){
if(strlen(s.data)==0){
return 0;
}
else if(string[i]==')' && s.data[strlen(s.data)-1]=='('){
pop(&s);
}
else if(string[i]=='}' && s.data[strlen(s.data)-1]=='{'){
pop(&s);
}
else if(string[i]==']' && s.data[strlen(s.data)-1]=='['){
pop(&s);
}
else{
return 0;
}
}
}
if(strlen(s.data)==0){
return 1;
}
else{
return 0;
}
}
char *readline()
{
size_t alloc_length = 1024;
size_t data_length = 0;
char* data = (char *)malloc(alloc_length);
while (1) {
char* cursor = data + data_length;
char* line = fgets(cursor, alloc_length - data_length, stdin);
if (!line) {
break;
}
data_length += strlen(cursor);
if (data_length < alloc_length - 1 || data[data_length - 1] == '\n') {
break;
}
alloc_length <<= 1;
data = (char *)realloc(data, alloc_length);
if (!data) {
data[0] = '\0';
break;
}
}
if (data[data_length - 1] == '\n') {
data[data_length - 1] = '\0';
data = (char *)realloc(data, data_length);
if (!data) {
data[0] = '\0';
}
} else {
data = (char *)realloc(data, data_length + 1);
if (!data) {
data[0] = '\0';
} else {
data[data_length] = '\0';
}
}
return data;
}
int main() {
char * string = readline();
printf("%d", validateParantheses(string));
return 0;
}