ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

括号匹配

括号匹配

力扣题目链接

实现情况

三种情况出现匹配不当:

  1. 左括号多右括号少;
  2. 左括号和右括号遇到不匹配;
  3. 右括号多左括号少;

很自然的想法,使用栈来做这个问题,其中分为两个方向:

  1. 遇到左括号入栈左括号,遇到相匹配的右括号出栈;
  2. 遇到左括号入栈右括号,遇到相匹配的右括号出栈;

其中入栈右括号比入栈左括号更简单,省去自定义的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();}
};
返回列表