题目描述:
大致思路: 递归
首先,找出 有效的 的括号的组合规律:
- 长度为 2*n, 其中左括号与右括号数量等于n。
- 在拼接的过程中, 不能出现 剩余的左括号数量大于剩余的右括号数量的情况。
最后找出递归结束的条件为 剩余的左括号数量与剩余的右括号数量皆为0的时候。
export function generateParenthesis(n: number): string[] {
const res: string[] = [];
/**
*
* @param lCount 剩余左括号数量
* @param rCount 剩余右括号数量
* @param str 拼接的字符串
*/
const generateStr = (lCount: number, rCount: number, str: string) => {
//递归什么时候结束: 当 lCount === 0 && rCount === 0
if (lCount === 0 && rCount === 0) {
res.push(str);
return;
}
//左侧括号还有剩余
lCount > 0 && generateStr(lCount - 1, rCount, `${str}(`);
//剩余左侧括号小于剩余右侧括号
lCount < rCount && generateStr(lCount, rCount - 1, `${str})`);
};
generateStr(n, n, '');
return res;
}