LeetCode 22. 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:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

public class Solution {  
    private List<String> list = new ArrayList<String>();  
      
    public List<String> generateParenthesis(int n) {  
        run("", n, 0);  
        return list;  
    }  
      
    // l 为剩余左括号数,r为剩余未匹配的右括号数目  
    public void run(String str, int l, int r) {  
        if (l == 0 && r == 0) {  
            list.add(str);  
            return;  //跳出run方法
        }  
        if (l > 0) {  
            String s = str + "(";  
            run(s, l-1, r+1);  
        }  
        if (r > 0) {  
            String s = str + ")";  
            run(s, l, r-1);  
        }  
    }  
}  

 程序结果:

 

posted @ 2016-12-29 10:43  不思蜀  阅读(191)  评论(0编辑  收藏  举报