Posts Tagged 【dfs】Generate Parentheses

来源:互联网 发布:昆明程序员工资 编辑:程序博客网 时间:2024/05/22 09:46

Generate Parentheses

 Total Accepted: 41747 Total Submissions: 128780My Submissions

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:

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

/*深搜DFS的思路递归的思路*/public class Solution {    public List<String> generateParenthesis(int n) {        List<String> list = new ArrayList<String>();        StringBuilder str = new StringBuilder();        generate(list,str,0,0,2*n);        return list;    }    private void generate(List<String> list,StringBuilder str,int left,int right,int n) {        if(left + right == n) {        if(left == right) {                list.add(str.toString());        }            return;        }        if(left+right < n && left > right) {        if(str.length() < left+right+1)        str.append(')');        else {            str.setCharAt(left+right, ')');               }            generate(list,str,left,right+1,n);        }        if(str.length() < left+right+1)    str.append('(');    else {        str.setCharAt(left+right, '(');           }        generate(list,str,left+1,right,n);    }}



Have you met this question in a real interv
0 0