题目:一个字符串里只有[ ] ( ) { }这6个符号,每队各自前后匹配,问这个字符串是不是匹配的。如[()]是匹配的,[{]}是不匹配的。
public boolean isValid (String s)
思路:用栈存放,拿栈顶元素和下一个元素比较,如果匹配的话pop栈顶元素,如果不匹配就放到栈里。
最后如果完全匹配了,栈为空,否则就没有完全匹配。
/*
思路:
把元素放到栈里,匹配了就弹出,看看最后栈是否为空
*/
public boolean isValid (String s) {
char[] c = s.toCharArray();
Stack<Character> stack = new Stack<>();
for (int i = 0; i < c.length; i++) {
if(stack.isEmpty()){
stack.push(c[i]);
}else{
char topItem = stack.peek();
char nowItem = c[i];
if((topItem == '(' && nowItem == ')') || (topItem == '[' && nowItem == ']')
|| (topItem == '{' && nowItem == '}')){
stack.pop();
}else{
//符合条件弹出,不符合条件的话就放入
stack.push(c[i]);
}
}
}
return stack.isEmpty();
}