LeetCode.22括號生成
阿新 • • 發佈:2018-11-10
題目來源:https://leetcode-cn.com/problems/generate-parentheses/description/
題目描述:
演算法描述:
1.這個題目可以看成是一個回溯演算法。
2.只要有左括號就先將左括號新增到str字串中進行遞迴,如果沒有左括號,就將右括號新增到str字串中進行遞迴。
直到左右括號數量都為0,說明此時找出一組解,將這組解新增到list集合中。返回到上次遞迴的地方找下一組解。
程式碼如下:
class Solution { public List<String> generateParenthesis(int n) { List<String> list = new ArrayList<>(); recursion(n,n,"",list); System.out.println(list); return list; } //left為剩餘左括號數,right為剩餘右括號數。 public void recursion(int left,int right,String str,List<String> list){ //當左右括號都已匹配完畢,就返回 if(left==0&&right==0) { list.add(str); return; } //如果有左括號,當前字串加上左括號,左括號個數-1進入遞迴 if(left>0) { recursion(left-1,right,str+"(",list); } //如果當前剩餘右括號個數大於左括號,當前字串加上右括號,右括號個數-1進入遞迴 if(left<right) { recursion(left,right-1,str+")",list); } } }