20. Valid Parentheses
Given a string 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.
Note that an empty string is also considered valid.
Example:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
Solution
C++
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(int i = 0; i < s.length(); ++i) {
if(!st.empty() &&
(s[i] == ')' && st.top() == '(' ||
s[i] == ']' && st.top() == '[' ||
s[i] == '}' && st.top() == '{'))
st.pop();
else st.push(s[i]);
}
return st.empty();
}
};
Python
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for i in s:
if len(stack) > 0:
if stack[len(stack)-1] == '(' and i == ')' or \
stack[len(stack)-1] == '[' and i == ']' or \
stack[len(stack)-1] == '{' and i == '}':
stack.pop()
else:
stack.append(i)
else:
stack.append(i)
return stack == []
Explanation
栈