leetcode generate parentheses

来源:互联网 发布:多宝视训练软件多少钱 编辑:程序博客网 时间:2024/06/05 12:50

题目

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:


思路

其实思路就是先放左括号,再放右括号,直到左右括号的数量均==n即可。注意:放括号的过程中,永远不能出现当前右括号的数量大于左括号数量的情况

public class Solution {    public static ArrayList<String> generateParenthesis(int n) {        ArrayList<String> list = new ArrayList<String>();        String str = new String();                recursive(0, 0, n, str, list);        return list;    }    public static void recursive(int left, int right, int n, String str, ArrayList<String> list) {        if (left < right) {//rightcount is not allowed larger than leftcount            return;        }        if (left == n && right == n) {//when leftcount and rightcount reaches largest number,put the new string into the arraylist            String tmp = str.toString();            list.add(tmp);            return;        }        if (left < n) {            String newstr = new String(str);            newstr+="(";            recursive(left+1, right, n, newstr, list);        }        if (right < n) {            String newstr = new String(str);            newstr+=")";            recursive(left, right+1,n, newstr, list);        }    }    public static void main(String[] args){    ArrayList<String> list=new ArrayList<String>();    list=generateParenthesis(4);    for(String item:list)    System.out.println(item);    } }

http://m.blog.csdn.net/blog/zinss26914/17537743

0 0
原创粉丝点击