import java.util.Stack;//java自带栈类
class Solution {
public boolean isValid(String s){
Stack<Character> stack=new Stack<>();//使用java的Stack类
for(int i=0;i<s.length();i++) {//字符串.length()方法求长度
char c = s.charAt(i);//取出字符串中的第i个字符。字符串.charAt(inidex)
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
}
else if (c == ')' || c == ']' || c == '}') {
if (stack.isEmpty())
return false;
//若栈为空,无法访问
char topChar=stack.pop();
//必须先取出再进行以下比较,否则三次比较需要取出三个数据,逻辑错误且可能pop空栈
if ((topChar == '[' && c == ']') || (topChar == '(' && c == ')') || (topChar == '{') && c == '}')
continue;//continue跳过本次,break跳出循环
//如果此次匹配成功一对,进行下次匹配
else
return false;
//此次匹配一对失败,则匹配失败
}
}
return stack.isEmpty();//*匹配完成后栈必须为空
}
}
栈实现括号匹配——java
最新推荐文章于 2021-02-18 15:31:36 发布