Valid Parentheses

C++

#include <iostream>
#include <stack>
#include <unordered_map>
using namespace std;

class Solution
{
  public:
    bool isValid(string s)
    {
        if (s.size() == 0)
            return true;
        unordered_map<char, char> T = {{'(', ')'}, {'[', ']'}, {'{', '}'}};
        stack<char> bracket_stack;
        int i = 1;
        bracket_stack.push(s[0]);
        while (i < s.size())
        {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{')
            {
                bracket_stack.push(s[i++]);
            }
            else
            {
                if (bracket_stack.empty())
                    return false;
                if (s[i] == T[bracket_stack.top()])
                {
                    bracket_stack.pop();
                    i++;
                }
                else
                {
                    return false;
                }
            }
        }
        return bracket_stack.empty() && i == s.size();
    }
};

int main()
{
    Solution *s = new Solution();
    cout << s->isValid("([)]") << endl;
    // system("pause");
    return 0;
}

python

Last updated

Was this helpful?