forked from VAR-solutions/Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbalanced_parentheses.cpp
More file actions
63 lines (56 loc) · 1.38 KB
/
balanced_parentheses.cpp
File metadata and controls
63 lines (56 loc) · 1.38 KB
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
#include <bits/stdc++.h>
using namespace std;
bool ArePair(char opening,char closing)
{
if(opening == '(' && closing == ')') return true;
else if(opening == '{' && closing == '}') return true;
else if(opening == '[' && closing == ']') return true;
return false;
}
bool AreParenthesesBalanced(string exp)
{
stack<char> S;
for(int i =0;i<exp.length();i++)
{
if(exp[i] == '(' || exp[i] == '{' || exp[i] == '[')
S.push(exp[i]);
else if(exp[i] == ')' || exp[i] == '}' || exp[i] == ']')
{
if(S.empty() || !ArePair(S.top(),exp[i]))
return false;
else
S.pop();
}
}
return S.empty() ? true:false; // if this returns true then it means that all the parantheses are matched properly and in order //
}
int main()
{
/*Code to test the function AreParenthesesBalanced*/
int t;
cin>>t;
for(int t_itr=0;t_itr<t;t_itr++)
{
string expression;
cout<<"Enter an expression: ";
cin>>expression;
if(AreParenthesesBalanced(expression))
cout<<"YES\n";
else
cout<<"NO\n";
}
return 0;
}
// To test the program comment out the above main function and uncomment the following main function//
/*int main()
{
if(AreParenthesesBalanced("[{()}]"))
{
cout<<"YES";
}
else
{
cout<<"NO";
}
return 0;
}*/