回溯法欣賞(2)
阿新 • • 發佈:2019-01-02
題目
https://leetcode.com/problems/generate-parentheses/
leetcode:22. Generate Parentheses 生成括號對
描述
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
import java.util.*; class Solution { public List<String> generateParenthesis(int n) { List<String> result=new ArrayList<>(); backTrack(n,result,new StringBuilder(),0,0); return result; } private void backTrack(int n,List<String> result,StringBuilder sb,int openCount,int closeCount) { if(sb.length()==2*n){ result.add(sb.toString()); return; } if(openCount<n){ backTrack(n,result,sb.append("("),openCount+1,closeCount); sb.deleteCharAt(sb.length()-1); //openCount--; } if(closeCount<openCount){ backTrack(n,result,sb.append(")"),openCount,closeCount+1); sb.deleteCharAt(sb.length()-1); //closeCount--; } } }