题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。。
这一题是借助栈先进后出的特性。
public boolean isValid(String s) {
// 奇数肯定false;
if(s.length()%2 == 1) return false;
if(s.isEmpty()) return true;
char[] string = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
if(string[i] == '('){
stack.push(‘)’);
}else if(string[i] == '['){
stack.push(‘]’);
}else if(string[i] == '{'){
stack.push(‘}’);
}
// 当出现右括号时,那么肯定会和栈顶的成一对才能为true,继续进行
// 字符串还没有结束栈退为空,说明肯定不符合
else if( stack.isEmpty() || string[i]!=stack.pop()){
return false;
}
}
if(stack.isEmpty()){
return true;
}
return false;
}