# Valid Parentheses

## [Valid Parentheses](https://leetcode.com/problems/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

```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();
    }
};
```
