问题描述:
思路分析:
1.先判断字符串中的字符个数是否为奇数以及栈是否为空,是奇数或者为空的话返回false。
2.遍历字符,遇到左括号就把对应的右括号压栈,直到遇到右括号时pop出栈顶元素与之比较。
3.遍历完成后,若是有效字符串,栈为空,反之,栈不为空。
代码如下:
class Solution {
public boolean isValid(String s) {
char[] chars = s.toCharArray();
Stack stack = new Stack();
if(s.length()%2==1){
return false;
}
for(int i=0;i<chars.length;i++){
if(chars[i]=='('){
stack.push(')');
}else if(chars[i]=='['){
stack.push(']');
}else if(chars[i]=='{'){
stack.push('}');
}else if(stack.isEmpty()||(char)stack.pop()!=chars[i]){
return false;
}
}
return stack.isEmpty();
}
}