import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
//创建两个数组一个存左括号,一个存右括号
String[] str1={"(","{","["};
String[] str2={")","}","]"};
Stack<String> stack1 = new Stack<String>();
String[] arr=s.split("");
//遍历数组
for(int i=0;i<arr.length;i++){
//如果字符串在左括号集合中,则直接压栈
if(contains(arr[i],str1)!=-1){
stack1.push(arr[i]);
//如果字符串在右括号集合中
}else if(contains(arr[i],str2)!=-1){
//栈为不为空,进行下一步判断
if(!stack1.isEmpty()){
//如果栈顶和当前字符串构成一对括号则将栈顶元素弹出,否则将当前字符串压栈
if(contains(arr[i],str2)==contains(stack1.peek(),str1)){
stack1.pop();
}else{
stack1.push(arr[i]);
}
}else{
//栈为空则将当前字符串压栈
stack1.push(arr[i]);
}
}
}
if(stack1.isEmpty()){
return true;
}
return false;
}
//查看数组中是否有该字符串
public int contains(String s,String[] str){
for(int i=0;i<str.length;i++){
if(str[i].equals(s)){
return i;
}
}
return -1;
}
}