题目:有效括号
题目描述:
样例展示:
辅助工具:栈(stack)。
我们将读取到的符号依次入栈,栈具有先进后出的特性,一旦左右括号匹配成功,则 pop出栈,全部顺利匹配成功,栈中无元素,才返回true,其余皆false。
我们为什么会想到栈呢?
例如当出现 '(' '(' ')' 时,我们要怎么告诉计算机右边括号是和哪个左括号进行匹配呢,而利用栈就能保证依次有序的对元素进行匹配
代码展示:
class Solution {
public boolean isValid(String s) {
char [] c = s.toCharArray(); //将字符转换成字符数组
Stack<Character> stack = new Stack<>();
for(char ch:c) {
if(ch=='(' || ch=='{' || ch=='[') {
stack.push(ch); //入栈
}
else if(ch==')') {
if(stack.empty() ||stack.pop()!= '(' ) {
return false;
}
}else if(ch=='}') {
if(stack.empty() ||stack.pop()!='{'){ //栈为空则无匹配项
return false;
}
}else if(ch==']') {
if(stack.empty() ||stack.pop()!='['){
return false;
}
}
}
return stack.isEmpty()? true :false ; //判断是否全部匹配成功
}
}