面试题 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;
    }
};
相关文章
|
6月前
|
存储 算法 编译器
米哈游面试算法题:有效的括号
米哈游面试算法题:有效的括号
76 0
|
存储
【栈与队列面试题】有效的括号(动图演示)
【栈与队列面试题】有效的括号(动图演示)
|
3月前
|
存储 算法 索引
【面试题】最长有效括号
【面试题】最长有效括号
43 0
【牛客面试必刷TOP101】有效括号序列、滑动窗口的最大值
【牛客面试必刷TOP101】有效括号序列、滑动窗口的最大值
|
算法 前端开发
经典面试题:有效的括号
在前端算法面试中,经常会被问到的一道题是 - “有效的括号”或者是称呼为“字符串是否是括号匹配”,什么意思呢?
159 0
【面试高频系列】生成所有「有效括号」,以及如何考虑「成对组合生成」问题 ... |刷题打卡
【面试高频系列】生成所有「有效括号」,以及如何考虑「成对组合生成」问题 ... |刷题打卡
[leetcode/lintcode 题解] 阿里算法面试真题:最长有效括号
[leetcode/lintcode 题解] 阿里算法面试真题:最长有效括号
[leetcode/lintcode 题解] 阿里算法面试真题:最长有效括号
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。