目录
一、题目

二、思路
1.有三种考虑的方向:
(1)(()左括号多
(2)())右括号多
(3)([)]左右括号不匹配
2.使用栈来实现本题
(1)如果遇到左括号就入栈
(2)如果遇到右括号,就比较栈顶元素和当前的右括号是否匹配,如果匹配则出栈
(3)因为栈当中存储的左括号,当遍历完整个字符串,栈还是不为空的,则左括号多,否则右括号多
三、代码实现
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0;i < s.length(); i++){
char ch = s.charAt(i);
if(ch == '(' || ch == '[' || ch == '{'){
stack.push(ch);
}else{
if(stack.empty()){
System.out.println("右括号多!");
return false;
}
char top = stack.peek();
if(top == '(' && ch == ')' || top == '[' && ch == ']' || top == '{' && ch == '}'){
stack.pop();
}else{
System.out.println("左右括号不匹配!");
return false;
}
}
}
if(!stack.empty()){
System.out.println("左括号多!");
return false;
}
return true;
}
}
本文探讨了如何使用栈来检查字符串中的括号是否有效,针对左括号多、右括号多和不匹配三种情况,并提供了Java代码实现。通过实例演示了如何通过遍历并对比栈顶元素和字符来判断括号平衡。
1054

被折叠的 条评论
为什么被折叠?



