From 1cc547fd8bddc3309d1bfdaf106bab701a232174 Mon Sep 17 00:00:00 2001 From: Virendra Carpenter <66617140+virendracarpenter@users.noreply.github.com> Date: Thu, 13 Oct 2022 18:12:33 +0530 Subject: [PATCH] chore(CPlusPlus): add balanced parenthesis problem (#930) --- .../CPlusPlus/Arrays/balanced-parenthesis.cpp | 70 +++++++++++++++++++ algorithms/CPlusPlus/README.md | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 algorithms/CPlusPlus/Arrays/balanced-parenthesis.cpp diff --git a/algorithms/CPlusPlus/Arrays/balanced-parenthesis.cpp b/algorithms/CPlusPlus/Arrays/balanced-parenthesis.cpp new file mode 100644 index 00000000..3f271bed --- /dev/null +++ b/algorithms/CPlusPlus/Arrays/balanced-parenthesis.cpp @@ -0,0 +1,70 @@ +#include +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 diff --git a/algorithms/CPlusPlus/README.md b/algorithms/CPlusPlus/README.md index 1de7183a..44469338 100644 --- a/algorithms/CPlusPlus/README.md +++ b/algorithms/CPlusPlus/README.md @@ -31,7 +31,7 @@ - [Next permutation](Arrays/next-permutation.cpp) - [Maximum Minimum Average of numbers](Arrays/max-min-avg.cpp) - [Sparse Matrix](Arrays/sparse_matrix.cpp) - +- [Balanced Parenthesis](Arrays/balanced-parenthesis.cpp) ## Dynamic-Programming