//注意一种测试用例:"((" "({)"
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
//创建一个栈
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
//如果遇到'(''{''['就进栈
//charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
char c = s.charAt(i);
if(c == '(' || c == '[' || c == '{'){
stack.push(c);
}else{
//如果栈为空,直接false
if(stack.isEmpty()) return false;
//取出栈顶元素为topChar,与下一个字符比较
char topChar = stack.pop();
if(c == ')' && topChar != '(' ) return false;
if(c == ']' && topChar != '[' ) return false;
if(c == '}' && topChar != '{' ) return false;
}
}
//如果没有下一个字符,则栈顶不会被取出,不为空,则为false
if(stack.isEmpty())
return true;
else return false;
}
}