这道题考使用回溯(递归的一种)进行深度优先算法,题目是这样的
数字n代表生产括号的对数,写一个算法,返回所有有效的括号组合
比如 n =1 代表生成1对括号,显然答案就是 “()"
n = 2, 代表生成2对括号, 答案就是"()()","(())"
n=3 代表生成3对括号,答案就是 "((()))","()()()","(()())","()(())","(())()" => 通过答案能发现什么规律么?
通过答案我们可以发现,我们把左括号'('看成一个字符,右括号')'也看成一个字符, 那么每个答案就是由2n个字符组成,每个字符是'('或者')'
=> 1. 答案是由一个字符串数组组成,字符串数组中的每一个字符串都是由2n个字符组成,其中每个字符都是'('或者')'
2. 对于这个字符串数组中的每一个字符串, 从左往右遍历这个字符串,在任何时候,'('的个数都应该大于或者等于')'的个数,否则就是无效的
3. 对于这个字符串数组中的每一个字符串,从左往右遍历这个字符串,当遍历完成时,'('的个数一定会等于')"的个数
标签:字符,个数,DFS,生成,括号,答案,字符串,LeetCode22 From: https://www.cnblogs.com/wphl-27/p/17916348.html