解题思路:采用栈解决。当括号为左括号时(,{,[,将字符存入栈;当括号为右括号时,),},],若栈顶元素与之匹配则pop出栈顶,不然返回false。遍历完字符串,栈为空返回true,不然返回false。注意,遍历过程中栈为空的情况。
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here boolean flag=true; Stack<Character> stack=new Stack<>(); if(s.length()!=0){ /*if(s.charAt(0)==')'||s.charAt(0)=='}'||s.charAt(0)==']'){ return false; }*/ for(int i=0;i<s.length();i++){ switch(s.charAt(i)){ case '(': stack.push('('); break; case '{': stack.push('{'); break; case '[': stack.push('['); break; case ')': if(!stack.empty()&&stack.peek()=='('){ stack.pop(); break; } else{ return false; } case '}': if(!stack.empty()&&stack.peek()=='{'){ stack.pop(); break; } else{ return false; } case ']': if(!stack.empty()&&stack.peek()=='['){ stack.pop(); break; } else{ return false; } default: break; } } } return stack.empty(); } }