import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        //右括号入栈 遇到左括号出栈
        Stack<Character> stack=new Stack<>();
        int n=s.length();
        for(int k=0;k<n;k++){
             if(stack.isEmpty()&&(s.charAt(k)==')'||s.charAt(k)=='}'||(s.charAt(k)==']'))){
                return false;
             }
            if(s.charAt(k)=='('||s.charAt(k)=='{'||s.charAt(k)=='['){
            stack.push(s.charAt(k));
            continue;
            }

             if(!stack.empty()&&(s.charAt(k)==')'&&stack.peek()=='(')||(s.charAt(k)=='}'&&stack.peek()=='{')||(s.charAt(k)==']'&&stack.peek()=='[')){
                    stack.pop();

             }else{
                return false;
             }

            
        }
         if(stack.isEmpty()){
            return true;
        }
       
        return false;
    }

    }