前言
LeetCode第20题
一、要求
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
二、实现
1.用栈的思想实现括号的匹配,使用一个栈存放左括号,遇到右括号就和栈顶元素相比较,匹配就出栈,不匹配返回。
代码如下(示例):
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;
} else{
char top=stack.peek();
if(ch==']'&&top=='['||ch=='}'&&top=='{'||ch==')'&&top=='('){
stack.pop();
} else{
System.out.println("左右括号不匹配");
return false;
}
}
}
}
if(!stack.empty()){
System.out.println("左括号多");
return false;
}
return true;
}
}