leetcode 第20-21题 Valid Parentheses & Generate Parentheses

来源:互联网 发布:大仲马小仲马知乎 编辑:程序博客网 时间:2024/05/01 18:44

这两题都是关于迭代式的操作的,20题使用简单的栈通过判断成对弹出,不成对返回不匹配的方式解决,而21题,这通过迭代进行解决

代码如下:

class Solution {

public:
    bool isValid(string s) {
        stack<char>tmps;
        int len=s.size();
        for(int i=0;i<len;i++){
            if(s[i]=='('||s[i]=='['||s[i]=='{')
                  tmps.push(s[i]);
            else if(tmps.size()==0||(s[i]==')'&&tmps.top()!='(')||(s[i]==']'&&tmps.top()!='[')||(s[i]=='}'&&tmps.top()!='{'))
                      return false;
                else tmps.pop();
        }
        if(tmps.size()==0)
        return true;
        else
        return false;
        
    }

};

void myf(int left,int right,vector<string > &res,string t,int n){
    if(left==n&&right==n&&t.size()==2*n){res.push_back(t);return ;}
     if(left<n){
            t;
            
            myf(left+1,right,res,t+'(',n);
    }
   
     if(right<left){
           myf(left,right+1,res,t+')',n);
    }
    
   
}
class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string>res;
        if(n<=0)return res;
        myf(0,0,res,"",n);
        return res;
        
    }
};

0 0
原创粉丝点击