class Solution { public boolean isValid(String s) { Deque<Character> st = new ArrayDeque<>(); char[] chrs = s.toCharArray(); int len = chrs.length,t = 0; while (t < len)//count==len时,下面的索引值==数组最大下标 { char c = chrs[t++]; if (!st.isEmpty()&&(st.peek()=='{'&&c=='}'||st.peek()=='(' &&c==')'||st.peek()=='['&&c==']')) st.pop(); else st.push(c); } return st.isEmpty(); } } class Solution { public boolean isValid(String s) {//要注意此处len不能换成s.length()/2,因为s会变。。。每执行一次for都会看一下判断条件 int len = s.length()/2; for(int i=1;i<=len;i++){ s = s.replace("()","").replace("{}","").replace("[]",""); // System.out.println("!!!"+s); } return s.length()==0; } }