Skip to content

Commit

Permalink
Generate Parentheses
Browse files Browse the repository at this point in the history
  • Loading branch information
moophis committed Sep 25, 2014
1 parent 4983fff commit f67a502
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions Generate Parentheses.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// https://oj.leetcode.com/problems/generate-parentheses/

class Solution {
// nr_open/nr_close: # of open/close paranthesis generated
void do_generate(vector<string> &ret, string &buf, int nr_open, int nr_close, int n) {
if (nr_open + nr_close == 2 * n) {
ret.push_back(buf);
return;
}

if (nr_open < n) {
buf.push_back('(');
do_generate(ret, buf, nr_open + 1, nr_close, n);
buf.pop_back();
}
if (nr_open > nr_close) {
buf.push_back(')');
do_generate(ret, buf, nr_open, nr_close + 1, n);
buf.pop_back();
}
}

public:
vector<string> generateParenthesis(int n) {
vector<string> ret;
if (n <= 0) {
return ret;
}
string buf;
do_generate(ret, buf, 0, 0, n);

return ret;
}
};

0 comments on commit f67a502

Please sign in to comment.