From 23614286c9167fc6b2be9e093a0a21b754111f8c Mon Sep 17 00:00:00 2001 From: mohit0312 <44519237+mohit0312@users.noreply.github.com> Date: Sat, 23 Oct 2021 11:28:54 +0530 Subject: [PATCH] balancedBrackets Check for Balanced Brackets in an expression (well-formedness) using Stack --- balancedBrackets | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 balancedBrackets diff --git a/balancedBrackets b/balancedBrackets new file mode 100644 index 0000000..ab8dcdf --- /dev/null +++ b/balancedBrackets @@ -0,0 +1,73 @@ +// CPP program to check for balanced brackets. +#include +using namespace std; + +// function to check if brackets are balanced +bool areBracketsBalanced(string expr) +{ + stack 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 ']': + + // Store the top element in c + x = s.top(); + s.pop(); + if (x == '(' || x == '{') + return false; + break; + } + } + + // Check Empty Stack + return (s.empty()); +} + +// Driver code +int main() +{ + string expr = "{()}[]"; + + // Function call + if (areBracketsBalanced(expr)) + cout << "Balanced"; + else + cout << "Not Balanced"; + return 0; +}