---
# System prepended metadata

title: '[20. Valid Parentheses](https://leetcode.com/problems/valid-parentheses/)'
tags: [Bloomberg, Stack]

---

# [20. Valid Parentheses](https://leetcode.com/problems/valid-parentheses/)
###### tags: `Stack`, `Bloomberg`

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
```

Solution:
```java=
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (c == '(') stack.push(')');
            else if (c == '{') stack.push('}');
            else if (c == '[') stack.push(']');
            else {
                if (stack.isEmpty() || stack.pop() != c) {
                    return false;
                }
            }
        }
        
        return stack.isEmpty();
    }
}
```
Time: O(n)
Space: O(n)
