Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar06 / src / balanced-brackets.cpp
diff options
context:
space:
mode:
Commit3e16c3a1d047aca54d4d7134d5f5fb1cbd6acd69 (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-20 15:37:03 -0500
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-20 15:37:03 -0500
Files551a81327303eb2d8458b1fdf03327aa31a2fa0c /Seminar06/src/balanced-brackets.cpp
Data-structures-and-algorithms-3e16c3a1d047aca54d4d7134d5f5fb1cbd6acd69.tar
Data-structures-and-algorithms-3e16c3a1d047aca54d4d7134d5f5fb1cbd6acd69.tar.gz
Data-structures-and-algorithms-3e16c3a1d047aca54d4d7134d5f5fb1cbd6acd69.zip
Parent98f6872efa0cd02e892ed5d7b836c6929d5c0e10 (diff)
Add Seminar06
1 files changed, 43 insertions, 0 deletions
-rw-r--r--Seminar06/src/balanced-brackets.cpp43
diff --git a/Seminar06/src/balanced-brackets.cpp b/Seminar06/src/balanced-brackets.cpp
new file mode 100644
index 0000000..cce5d01
--- /dev/null
+++ b/Seminar06/src/balanced-brackets.cpp
@@ -0,0 +1,43 @@
+#include <stack>
+#include <string>
+
+bool is_opening_bracket(char ch)
+{
+ return ch == '(' || ch == '{' || ch == '[';
+}
+
+bool is_closing_bracket(char ch)
+{
+ return ch == ')' || ch == ']' || ch == '}';
+}
+
+bool is_corresponding_brackets(char left, char right)
+{
+ return left == '(' && right == ')' || left == '{' && right == '}' || left == '[' && right == ']';
+}
+
+bool balanced_brackets(const std::string& str)
+{
+ std::stack<char> s;
+
+ for (char c : str)
+ {
+ if (is_opening_bracket(c))
+ {
+ s.push(c);
+ }
+ else if (is_closing_bracket(c))
+ {
+ if (s.empty())
+ return false;
+
+ char top = s.top();
+ s.pop();
+
+ if (!is_corresponding_brackets(top, c))
+ return false;
+ }
+ }
+
+ return s.empty();
+} \ No newline at end of file