• [LeetCode] Generate Parentheses


    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    "((()))", "(()())", "(())()", "()(())", "()()()"

    class Solution {
    public:
        vector<string> generateParenthesis(int n) {
            vector<string> list;
            
            stack<string> stack1 ;
            stack<int> vaStack1;
            stack1.push("(");
            vaStack1.push(0);//存储右括号的数量
            
            while(stack1.size()!=0){
                
                string s = stack1.top();
                int v = vaStack1.top();//v是右括号的数量
                stack1.pop();
                vaStack1.pop();
                if(s.size()==n*2){
                    list.push_back(s);
                    continue;
                } 
                if(s.size()-v<n){//左括号的数量小于n,给s后面补左括号
                    stack1.push(s+"(");
                    vaStack1.push(v);
                }
                if(2*v<s.size()){//缺右括号,给s后面补左括号
                   stack1.push(s+")");
                   vaStack1.push(v+1);
                }
            }
         return list;
        }
    };
  • 相关阅读:
    HTML5+php图片自由裁剪上传功能
    一个日期时间显示框的美化风格示例
    PHP+jquery 瀑布流+LightBox图片盒子特效
    类型
    异常语句
    穷举
    练习
    累加求和
    猜拳游戏(三局两胜)
    正则表达式
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3867164.html
Copyright © 2020-2023  润新知