有效的括号–括号匹配问题–Java
代码如下:—解析在代码里
import java.util.ArrayList;
/**
* Create with Darcula IDEA
* Description:
* 括号匹配问题
*/
public class Solution {
public boolean isValid(String s) {
//1.创建一个栈
ArrayList<Character> stack = new ArrayList<>();
//2.遍历
for(int i = 0; i < s.length(); i++){
//找到指定索引处的字符
char c = s.charAt(i);
//遍历遇到左括号入栈,遇到右括号则分析
switch (c){
case '{':
case '[':
case '(':
stack.add(c);
break;
case'}':
case']':
case')':
if(stack.isEmpty()){
return false;
}
//栈不为空则栈顶元素出栈
char left = stack.remove(stack.size() - 1);
//若栈顶元素与右括号不匹配则错误
if (!((left == '{' && c == '}') || (left == '[' && c == ']') || (left == '(' && c == ')'))) {
return false;
}
break;
default:
break;
}
}
if(stack.isEmpty()){
return true;
}else{
return false;
}
}
}