- step 1:创建辅助栈,遍历字符串。
- step 2:每次遇到小括号的左括号、中括号的左括号、大括号的左括号,就将其对应的呦括号加入栈中,期待在后续遇到。
- step 3:如果没有遇到左括号但是栈为空,说明直接遇到了右括号,不合法。
-
step 4:其他情况下,如果遇到右括号,刚好会与栈顶元素相同,弹出栈顶元素继续遍历。
//必须有左括号的情况下才能遇到右括号---------st.empty()结果是bool值else if(st.empty()) 也即还有左括号存在,st不是空的。如果st已经空了,还在匹配呢,有右括号呢,肯定是不对的。return false;
-
【( 】情况,都不满足以下两种情况 会执行到循环结束,return st.empty();elseif(st.empty())returnfalse;//右括号匹配则弹出elseif(st.top() == s[i])st.pop();
- step 5:理论上,只要括号是匹配的,栈中元素最后是为空的,因此检查栈是否为空即可最后判断是否合法。