括号匹配
实现情况
三种情况出现匹配不当:
- 左括号多右括号少;
- 左括号和右括号遇到不匹配;
- 右括号多左括号少;
很自然的想法,使用栈来做这个问题,其中分为两个方向:
- 遇到左括号入栈左括号,遇到相匹配的右括号出栈;
- 遇到左括号入栈右括号,遇到相匹配的右括号出栈;
其中入栈右括号比入栈左括号更简单,省去自定义的match阶段;
具体实现代码如下:
class Solution {
public:
bool isValid(string s) {
stack<char> st;
int len = s.size();
for(int i = 0; i < len;i++){
if(s[i] == '(')st.push(')');
else if(s[i] == '{')st.push('}');
else if(s[i] == '[')st.push(']');
else if(st.empty()||st.top()!=s[i])return false;
else st.pop();
}
return st.empty();
}
};

浙公网安备 33010602011771号