LeetCode Solutions
20. Valid Parentheses
Time: $O(n)$ Space: $O(n)$
class Solution {
public:
bool isValid(string s) {
stack<char> stack;
for (const char c : s)
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.empty() || pop(stack) != c)
return false;
return stack.empty();
}
private:
int pop(stack<char>& stack) {
const int c = stack.top();
stack.pop();
return c;
}
};
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (final 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();
}
}
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for c in s:
if c == '(':
stack.append(')')
elif c == '{':
stack.append('}')
elif c == '[':
stack.append(']')
elif not stack or stack.pop() != c:
return False
return not stack