做题的时候,在第三个测试用例上出了点小问题,然后发现自己没有加上循环结束后判断栈是否为空的条件,为空时才可以返回true。
import java.util.*; public class Parenthesis { public boolean chkParenthesis(String A, int n) { // write code here Stack<Character> stack = new Stack<>(); char[] chars = A.toCharArray(); for (char item : chars) { if (item == '(') { stack.push(item); } else if (item == ')') { if (stack.isEmpty()) { return false; } else if (stack.pop() != '(') { // 用pop判断后不需要再写else条件出栈,因为无论这条语句是否成功,都会出栈 return false; } } else { return false; } } if (stack.isEmpty()) return true; else { return false; } } }