代码:
思路在备注都很清楚了
import java.util.*;
class Solution {
public boolean isValid(String s) {
if(s == null) return false;
Stack<Character> stack = new Stack<>();
char[] ch = s.toCharArray();
//if((ch.length+1)%2 == 1) return false;
for(char c : ch){
//前括号
if(c=='{' || c=='(' || c=='['){
stack.push(c);
}
//后括号
else {
//匹配成功,弹出前括号
if(!stack.isEmpty() &&
( c == '}' && stack.peek()=='{'
|| c == ']' && stack.peek()=='['
|| c == ')' && stack.peek()=='(')){
stack.pop();
}
//匹配不成功,或者栈空,失败
else{
return false;
}
}
}
//前括号未匹配完全,则失败
return stack.isEmpty();
}
}
如图啊,知道原因的大佬求告知~