> For the complete documentation index, see [llms.txt](https://docs-57.gitbook.io/data-structure-and-algorithms/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-57.gitbook.io/data-structure-and-algorithms/problems/stack/valid-parentheses.md).

# Valid Parentheses

{% hint style="info" %}
String, Stack Approach
{% endhint %}

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.
3. Every close bracket has a corresponding open bracket of the same type.

&#x20;

**Example 1:**

<pre><code><strong>Input: s = "()"
</strong><strong>Output: true
</strong></code></pre>

**Example 2:**

<pre><code><strong>Input: s = "()[]{}"
</strong><strong>Output: true
</strong></code></pre>

**Example 3:**

<pre><code><strong>Input: s = "(]"
</strong><strong>Output: false
</strong></code></pre>

&#x20;

**Constraints:**

* `1 <= s.length <= 104`
* `s` consists of parentheses only `'()[]{}'`.

### Solutions

```csharp
public class Solution {
    public bool IsValid(string s) {
        
        if(s.Length%2!=0){
            return false;
        }
        
        Stack<char> braces=new Stack<char>();
        foreach( char ch in s){
            
                if(braces.Count==0){
                    braces.Push(ch);
                    continue;
                }
 
            if(ch==')' && braces.Peek()=='('){
                braces.Pop();
            }
            else if(ch=='}' && braces.Peek()=='{'){
                braces.Pop();
            }
            else if(ch==']' && braces.Peek()=='['){
                braces.Pop();
            }
            else{
                 braces.Push(ch);
            }
            
        }
        
        return braces.Count==0;
    }
}
```

> Complexity

* **Time Complexity:** O(1)
* **Auxiliary Space:** O(1)
