diff options
1 files changed, 32 insertions, 0 deletions
| -rw-r--r-- | Additional/Additional-2024-IS/solutions/basic-parser.cpp | 32 |
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; +} |
