Valid Parentheses⚓︎
Description⚓︎
Given a string s
containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
- Every close bracket has a corresponding open bracket of the same type.
Example 1:
- Input:
s = "()"
- Output:
true
Example 2:
- Input:
s = "()[]{}"
- Output:
true
Example 3:
- Input:
s = "(]"
- Output:
false
Constraints:
1 <= s.length <= 10^4
s
consists of parentheses only'()[]{}'
.
Solution⚓︎
Three situations when the string is not valid:
- The first case: the string has been traversed, but the stack is not empty, indicating that there is a corresponding left bracket does not have a right bracket to match, so return
false
; - The second case: during the process of traversing the string to match, it is found that there is no character to match in the stack. So return
false
; - The third case: traversing the string matching process, the stack is already empty, there is no matching character, that is, the right bracket did not find the corresponding left bracket. Also return
false
.
- Time complexity: \(O(n)\);
- Space complexity: \(O(n)\).
Another way of writing: