import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*使用栈,利用对称的方法判断,具体如下:
*若字符为'(''{''['时,分别将其存入栈中;若字符为')''}'']'时,将其推出栈,判断是否和对称的'(''{''['相等。若不相等,肯定不是有效字符;若相等,则最后栈变为null。
*/
public boolean isValid (String s) {
// write code here
if (s.length() == 1) return false;
Stack<Character> stack = new Stack<>();
for (char i:s.toCharArray()) {
switch (i) {
case '(':
case '[':
case '{':
stack.push(i);
break;
case ')': {
if (stack.empty() || stack.pop() != '(')
return false;
else
break;
}
case '}': {
if (stack.empty() || stack.pop() != '{') //推出栈,并比较是否和'}'对应的'{'相等;
return false;
else
break; //一定要有break。
}
case ']': {
if (stack.empty() || stack.pop() != '[')
return false;
else
break;
}
}
}
if(stack.empty()) //若是对称,则全部会被压出,栈为空
return true;
else
return false;
}
}