import java.util.Stack;
/**
* LeetCode 20
*/
public class leet20 {
public boolean isValid(String s){
//创建栈stack
Stack<Character> stack = new Stack<Character>();
//遍历输入的“括号”字符串(s)
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//若是“(","[","{"三种情况,则将其压入栈
if(c == '('|| c=='['||c=='{')
stack.push(c);
else {
//栈空,匹配失败
if(stack.isEmpty())
return false;
char topChar = stack.pop();
//此三种情况“括号们”匹配失败
if(c == ')'&& topChar !='(')
return false;
if(c == ']'&& topChar !='[')
return false;
if(c == '}'&& topChar !='{')
return false;
}
}
//不能直接return true,还要看栈里是否还有字符
//若还有,则匹配失败,如"{[]}("
return stack.isEmpty();
}
}