How to check if a string contains only valid parentheses (open close same type (), {}, []) in C++

1 Answer

0 votes
#include <iostream>
#include <stack>

class Program {
public:
    bool string_contains_valid_parentheses(std::string s) {
        std::stack<char> stack;

        for (const char ch : s) {
            if (ch == '(') {
                stack.push(')');
            }
            else if (ch == '{') {
                stack.push('}');
            }
            else if (ch == '[') {
                stack.push(']');
            }
            // Example: if first '(' == second '(' = valid -> next check
            else if (stack.empty() || pop(stack) != ch) {
                return false;
            }
        }

        return stack.empty();
    }

private:
    int pop(std::stack<char>& stack) {
        const int ch = stack.top();
        stack.pop();
        return ch;
    }
};


int main() {
    Program p;

    std::cout << p.string_contains_valid_parentheses("(){}[]()(){}");
}



/*
run:

1

*/

 



answered Mar 9, 2024 by avibootz
...