DSA/algorithms/CPlusPlus/Arrays/balanced-parenthesis.cpp

71 lines
1.3 KiB
C++

#include <bits/stdc++.h>
using namespace std;
bool areBracketsBalanced (string expr)
{
stack < char >s;
char x;
// Traversing the Expression
for (int i = 0; i < expr.length (); i++)
if (expr[i] == '(' || expr[i] == '[' ||expr[i] == '{')
{
// Push the element in the stack
s.push (expr[i]);
continue;
}
// IF current current character is not opening
// bracket, then it must be closing. So stack
// cannot be empty at this point.
if (s.empty ())
return false;
switch (expr[i])
{
case ')': // Store the top element in a
x = s.top ();
s.pop ();
if (x == '{' || x == '[')
return false;
break;
case '}': // Store the top element in b
x = s.top ();
s.pop ();
if (x == '(' || x == '[')
return false;
break;
case ']': x = s.top ();
s.pop ();
if (x == '(' || x == '{')
return false;
break;
}
}
return (s.empty ());
}
// Driver code
int main ()
{
string expr = "{()}[]";
// Function call
if (areBracketsBalanced (expr))
cout << "Balanced";
else
cout << "Not Balanced";
return 0;
}
// Output:-
// Enter the brackets to check if its balanced or not : [{}]
// Balanced
// Enter the brackets to check if its balanced or not : {]
Not Balanced