20. Valid Parentheses
Description of the Problem
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^4sconsists of parentheses only'()[]{}'.
Solution
Tags: Stack
Code(Rust)
impl Solution {
pub fn is_valid(s: String) -> bool {
let mut stack = Vec::new();
for i in s.chars() {
match i {
'{' => stack.push('}'),
'(' => stack.push(')'),
'[' => stack.push(']'),
'}'|')'|']' if Some(i) != stack.pop() => return false,
_ => (),
}
}
return stack.is_empty();
}
}
Complexity
- n is the length of string
Time complexity:
- \( T(n) = O(n) \)
Auxiliary Space:
- \( S(n) = O(n) \)