lintcode: 生成括号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode: 生成括号相关的知识,希望对你有一定的参考价值。
生成括号
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
样例
给定 n = 3
, 可生成的组合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"
解题
采用递归树的思想,当左括号数大于右括号数时可以加左或者右括号,否则只能加左括号,当左括号数达到n时,剩下全部添加右括号
public class Solution { /** * @param n n pairs * @return All combinations of well-formed parentheses */ public ArrayList<String> generateParenthesis(int n) { // Write your code here ArrayList<String> result = new ArrayList<String>(); if(n<=0) return result; int left = 0,right=0; String str=""; generateParenthesis(n,left,right,str,result); return result; } public void generateParenthesis(int n,int left,int right,String str ,ArrayList<String> result){ if(left == n){ for(int i=0;i< n- right;i++) str+=")"; result.add(str); return; } generateParenthesis(n, left+1, right,str+"(",result); if(left>right){ generateParenthesis(n, left, right+1,str+")",result); } } }
以上是关于lintcode: 生成括号的主要内容,如果未能解决你的问题,请参考以下文章
LintCode Python 简单级题目 423.有效的括号序列