zoukankan      html  css  js  c++  java
  • Java [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:

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

    解题思路:

    利用递归的思想。用left和right分别记录剩余的左,右括号数。

    每次都首先把左括号放进字符串中。

    放入右括号的条件是:右括号剩余的数目大于0,且左括号剩余数目小于右括号剩余数目。

    当left和right都为0时表明字符串已形成,加入到List中。

    代码如下:

    public class Solution {
        List<String> list = new ArrayList<String>();
    	public List<String> generateParenthesis(int n) {
    		if (n <= 0)
    			return list;
    		generate("", n, n);
    		return list;
    	}
    	public void generate(String s, int left, int right) {
    		if (left == 0 && right == 0) {
    			list.add(s);
    			return;
    		}
    		if (left > 0)
    			generate(s + '(', left - 1, right);
    		if (right > 0 && right > left)
    			generate(s + ')', left, right - 1);
    	}
    }
    
  • 相关阅读:
    滑雪
    2084 数塔HDU
    括号匹配(二)
    项链
    单调递增最长子序列
    矩形嵌套
    最长公共子序列
    poj3253
    表达式求值
    颜色16进制代码表显示和16进制数值对比显示方便查找
  • 原文地址:https://www.cnblogs.com/zihaowang/p/4503831.html
Copyright © 2011-2022 走看看