题目链接

括号生成

题目描述

image.png

实现代码

思路:每个位置的括号设置就两个选择:左括号和右括号,因此可以通过dfs来针对两种方式进行求解,然后加入一个局部变量,每次对添加的括号进行记录

dfs实现代码:

  1. class Solution {
  2. List<String> result = new ArrayList<>();
  3. public List<String> generateParenthesis(int n) {
  4. dfs(n, n, "");
  5. return result;
  6. }
  7. public void dfs(int remainL, int remainR, String str) {
  8. if (remainL > remainR || remainL < 0 || remainR < 0) {
  9. return;
  10. }
  11. if (remainL == 0 && remainR == 0) {
  12. result.add(str);
  13. return;
  14. }
  15. dfs(remainL - 1, remainR, str + "(");
  16. dfs(remainL, remainR - 1, str + ")");
  17. }
  18. }