Leetcode 面试题08.09 括号

题目:
括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。
说明:解集不能包含重复的子集。
例如,给出 n = 3,生成结果为:
		[
			"((()))",
			"(()())",
			"(())()",
			"()(())",
			"()()()"
		]

思路:使用dfs深度优先算法 递归遍历
			由于括号是由左括号开始 当右括号大于左括号时 结束此次遍历
			当left == right的时候 保留当前结果
			
代码如下(java):
		
		public void dfs(String curString,List result,int left,int right) {
	
				if( left > right ) {
					return;
				}
	
				if( left == right && curString != "" ) {
					result.add(curString);
				}
	
				if( left > 0 ) {
					dfs( curString+"(", result, left-1, right);
				}
				
				if( right > 0 ) {
					dfs( curString+")", result, left, right-1);
				}
	
		}

你可能感兴趣的:(leetcode,leetcode)