Website Summary Files Commits Branches @commit @diff @stats
path: root / Additional / Additional-2024-IS / solutions / basic-parser.cpp
diff options
context:
space:
mode:
Commit98f6872efa0cd02e892ed5d7b836c6929d5c0e10 (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-15 14:38:47 -0500
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-15 14:38:47 -0500
Files3f5a174c2081dda038ff8874f40a849b17a62c45 /Additional/Additional-2024-IS/solutions/basic-parser.cpp
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.tar
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.tar.gz
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.zip
Parent54be018e9810ff7cfab307e17da1aa4288b9f414 (diff)
Add additional tasks
1 files changed, 32 insertions, 0 deletions
-rw-r--r--Additional/Additional-2024-IS/solutions/basic-parser.cpp32
diff --git a/Additional/Additional-2024-IS/solutions/basic-parser.cpp b/Additional/Additional-2024-IS/solutions/basic-parser.cpp
new file mode 100644
index 0000000..b3f8e49
--- /dev/null
+++ b/Additional/Additional-2024-IS/solutions/basic-parser.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <stack>
+#include <string>
+
+std::string parse(const std::string& str) {
+ std::stack<char> result;
+
+ for (char ch : str) {
+ if (ch >= 'a' && ch <= 'z') {
+ result.push(ch);
+ } else if (ch == '*' && !result.empty()) {
+ result.pop();
+ } else if (ch == '$' && !result.empty()) {
+ result.push(result.top());
+ }
+ }
+
+ std::string finalResult;
+ while (!result.empty()) {
+ finalResult = result.top() + finalResult;
+ result.pop();
+ }
+
+ return finalResult;
+}
+
+int main() {
+ std::string input = "abc*$$*d$a$$zz*";
+ std::cout << "Result: " << parse(input) << std::endl;
+
+ return 0;
+}