面试题 08.09:括号

简介: 面试题 08.09:括号

题目

题目链接

括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。

说明:解集不能包含重复的子集

例如,给出 n = 3,生成结果为:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

解题

方法一:回溯

用left,right两个变量去控制,左括号和右括号数

if(c=='(') backtracing(n,left+1,right);保证左括号的优先。

class Solution {
public:
    vector<char> sign={'(',')'};
    string path;
    vector<string> res;
    void backtracing(int n,int left,int right){
        if(left>n||right>n||left<right) return;
        if(left==n&&right==n){
            res.push_back(path);
            return;
        }
        for(char c:sign){
            path.push_back(c);
            if(c=='(') backtracing(n,left+1,right);//优先左括号
            else backtracing(n,left,right+1);
            path.pop_back();
        }
    }
    vector<string> generateParenthesis(int n) {
        backtracing(n,0,0);
        return res;
    }
};
相关文章
|
1月前
|
Java C++ Python
leetcode-20:有效的括号
leetcode-20:有效的括号
40 0
LeetCode | 20. 有效的括号
LeetCode | 20. 有效的括号
|
1月前
leetcode:20. 有效的括号
leetcode:20. 有效的括号
16 0
|
1月前
leetcode-22:括号生成
leetcode-22:括号生成
21 0
|
1月前
leetcode:有效的括号
leetcode:有效的括号
|
7月前
Leetcode20.有效的括号
Leetcode20.有效的括号
21 0
|
7月前
|
C语言 C++
20.有效的括号(LeetCode)
20.有效的括号(LeetCode)
leetcode:20.有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
49 0