判断括号是否匹配。
思路:在数据结构的课程中也讲过关于括号的判断,要用到堆栈。所以看到这个题,我们首先想到的就是用堆栈。
首先,将字符串的第一个字符压入栈,然后依次遍历字符串后面的每个字符,
如果栈不为空且后面的元素和栈顶元素相匹配,则出栈。否则,压入栈中。
遍历完字符串的最后一个字符后,如果栈为空,则输入合法;否则,输入不合法。
实现2:
public boolean isValid2(String s){
Stack<Character> stack=new Stack<Character>();
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 true;
}
if(c==')'&&stack.peek()=='('||c=='}'&&stack.peek()=='{'||c==']'&&stack.peek()=='['){
stack.pop();
}else{
return false;
}
}
}
if(stack.isEmpty()){
return true;
}
return false;
}