- 判断字符串为空或由空格、tab等组成
- new Character组成的Stack对象
- 遍历字符串,switch判断将第i个值将"(" "{" "[" 压栈,判断")" "}" "]"分别判断stack为空或取值不match返回false,满足条件的则执行出栈
- 最后判断stack是否为空
public static boolean isValid(String s){
if(s.trim().isEmpty(){
return false;
}
Stack<Character> stk = new Stack<Character>();
for(int i = 0; i < s.length(); i++){
char item = s.charAt(i);
switch(item){
case '(': case '[': case '{':
stk.push(item);
break;
case ')':
if(stk.isEmpty() || stk.peek() != '('){
return false;
}
stk.pop();
break;
case ']':
if(stk.isEmpty() || stk.peek() != '['){
return false;
}
stk.pop();
break;
case '}':
if(stk.isEmpty() || stk.peek() != '{'){
return false;
}
stk.pop();
break;
}
}
return stk.isEmpty();
}