题解 | #括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

class Solution {
private:
    string path = "";
    vector<string> res;
    vector<char> src = {'(', ')'};
public:
    /**
     * 
     * @param n int整型 
     * @return string字符串vector
     */
    vector<string> generateParenthesis(int n) {
        // write code here
        dfs(2*n);
        return res;
    }
    
    void dfs(int n){
        if(n <= 0){
            if(check(path)){
                res.push_back(path);
            }
            return;
        }
        
        for(int i=0; i<src.size(); i++){
            path.push_back(src[i]);
            dfs(n-1);
            path.pop_back();
        }
        
    }
    
    bool check(string s){
        if(s.length() % 2 != 0){
            return false;
        }
        
        stack<char> st;
        int i = 0;
        while(i < s.length()){
            if(s[i] == '('){
                st.push(s[i]);
            }
            else{
                if(st.empty()){
                    return false;
                }
                st.pop();
            }
            i++;
        }
        
        if(!st.empty()){
            return false;
        }
        
        return true;
    }
    
};
全部评论

相关推荐

大猪蹄子哥:1-谁教你这么写教育经历的……咱都这个学历了,很多公司要看本科、硕士,Gap Year的,你啪就给一个上大26届硕士,没了。 2-那堆奖学金揉成一行放最后得了,放前面显得你没技术自信,还是那句话,对于咱这个学历直接上重点,你这上半段看起来像个大专(无恶意 3-专业技能最好点出来细化方向,你熟悉的以太网是UDP还是TCP,是千兆还是万兆等等,多种信号处理……那你倒是说两个啊,后面空着干嘛,会的干嘛不讲 4-项目经历废话太多,描述不专业(怎么还有我,我们这种词),没有数据支撑(是婴儿还是巨人看不出来)。最后如果这些是真的XX项目、比赛,最好点出来,不然更显得像自学着玩的,或者说抄的(经典复现等于我做过 5-个人总结在咱这个分段没用
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务