题目:https://leetcode-cn.com/problems/valid-parentheses/
代码:
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
Character c = s.charAt(i);
if (stack.isEmpty() || !isMatch(stack.peek(), c)) {
stack.push(c);
} else {
stack.pop();
}
}
return stack.isEmpty();
}
private boolean isMatch(Character c1, Character c2) {
if (c1 == null || c2 == null) {
return false;
}
return c1.equals('(') && c2.equals(')')
|| c1.equals('[') && c2.equals(']')
|| c1.equals('{') && c2.equals('}')
;
}
}
挺简单的一道题目,主要解题思路就是使用栈,遍历字符串,当栈为空或者栈顶字符跟现有字符无法匹配时入栈,否则出栈。最后判断栈是否为空即可。
注意点 :
1、需要自己实现是否匹配的方法isMatch,也不难,就是判断条件而已。
2、isMatch(stack.peek(), c)这里的两个参数顺序不能写反了,因为[]
这种情况是匹配的,而][
这种情况是不匹配的。