Website Summary Files Commits Branches @commit @diff @stats
path: root / Additional / Additional-2024-IS / solutions / basic-parser.cpp
diff options
context:
space:
mode:
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;
+}