public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
//只要再以下过程当中 发现不匹配 直接return
for (int i = 0; i < s.length(); i++) {
//1、左括号进行入栈
char tmp = s.charAt(i);
if(tmp == '(' || tmp == '[' || tmp == '{') {
stack.push(tmp);
}else {
//2、判断栈是否为空
if(stack.isEmpty()){
return false;
}else{
//3、判断栈顶元素的字符左括号和当前的字符 右括号是否匹配
char cur = s.charAt(i);
if(stack.peek()=='(' && cur == ')'|| stack.peek() == '[' && cur == ']'||stack.peek() =='{'&&cur == '}') {
stack.pop();
}else {
return false;
}
}
}
}
//4、判断栈是否为空
if( !stack.isEmpty()){
return false;
}else {
return true;
}
}
括号匹配问题(Java使用栈操作)
最新推荐文章于 2022-01-13 22:42:28 发布