Valid Parentheses

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.

  2. Open brackets must be closed in the correct order.

Example 1:


Input: s = "()"
Output: true

Example 2:


Input: s = "()[]{}"
Output: true

Example 3:


Input: s = "(]"
Output: false

Example 4:


Input: s = "([)]"
Output: false

Example 5:


Input: s = "{[]}"
Output: true

Constraints:

  • 1 <= s.length <= 104

  • s consists of parentheses only '()[]{}'.

Solutions

🧠 Cpp

class Solution
{
    std::map<char,char> p_pairs
    {
        {'}','{'},
        {')','('},
        {']','['},
        {'{',' '},
        {'(',' '},
        {'[',' '},
    };

public:
    bool isValid(string s)
    {
        std::stack<char> parenthesis;
        for(char ch : s)
        {

            if(p_pairs[ch] == ' ')
                parenthesis.push(ch);
            else if(parenthesis.size() && p_pairs[ch] == parenthesis.top())
                parenthesis.pop();
            else 
                return false;
        }

        return parenthesis.empty();
    }
};

Last updated