# [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)