Valid Parentheses
思路非常简单没有可说的,左括号压入右括号弹出即可,要注意的是最后的判断是栈为空才是合法序列,下面是代码
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
store = {'(': ')', '[': ']', '{':'}'}
for bracket in s:
if bracket in store.keys():
stack.append(bracket)
elif not stack:
return False
elif store[stack.pop()] != bracket:
return False
return stack == []
Java版本
class Solution {
public boolean isValid(String s) {
Map<Character, Character> store = new HashMap<>();
store.put('(', ')');
store.put('{', '}');
store.put('[', ']');
Stack<Character> stack = new Stack<>();
for (char chr : s.toCharArray()) {
if (store.containsKey(chr)) {
stack.add(chr);
} else if (stack.isEmpty()) {
return false;
} else if (store.get(stack.pop()) != chr) {
return false;
}
}
return stack.isEmpty();
}
}