【打卡】牛客网:BM60 括号生成

news/2024/7/20 9:47:05 标签: 算法, 深度优先, leetcode

资料:

size()//获取字符串长度
insert()//插入字符串
append()//插入字符串
erase()//删除任意字符,时间复杂度O(n),n为字符串长度
substr()//截取字符字串
back()//获取最后一个字符
pop_back()//删除最后一个字符,时间复杂度O(1)
empty()//判断是否为空
clear()//清空字符串

c++ string用法 入门必看 超详细-CSDN博客

自己写的(未通过):

必须得按照题目给的排列规则。

#include <algorithm>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串vector
     */
    vector<string> dfs(int n){
        if(n == 1){
            vector <string> a;
            a.push_back("()");
            return a;
        }
            
        vector <string> strN_ = dfs(n-1); // n-1的结果  
        vector <string> strN;    //n的结果

        for(int i = 0; i < strN_.size(); i++){
            strN.push_back("(" + strN_[i] + ")");
        }

        for(int i = 0; i < strN_.size() - 1; i++){
            strN.push_back(strN_[i]  + "()" );
        }

        for(int i = 0; i < strN_.size(); i++){
            strN.push_back("()"  + strN_[i] );
        }

        sort(strN.begin(), strN.end());
        return strN;
    }
    vector<string> generateParenthesis(int n) {
        // write code here
        return dfs(n);
    }
};

模板的:

#include <algorithm>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串vector
     */
    void dfs(int left, int right, int n, string str, vector<string> &res){
        if(left == n && right == n){
            res.push_back(str);
            return;
        }

        if(left < n)
            dfs(left+1, right, n, str+"(", res);
            

        if(right < n && left > right)  //关键规律:left > right
            dfs(left, right+1, n, str+")", res);

    }
    vector<string> generateParenthesis(int n) {
        // write code here
        string str;
        vector<string> res;
        dfs(0, 0, n, str, res);
        return res;
    }
};


http://www.niftyadmin.cn/n/5232784.html

相关文章

【MySql】悲观锁和乐观锁的介绍

一、并发控制 当程序中可能出现并发的情况时&#xff0c;就需要保证在并发情况下数据的准确性&#xff0c;以此确保当前用户和其他用户一起操作时&#xff0c;所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用…

Opencv拖动条控制均值滤波卷积核大小,拖动条控制是否保存(涉及知识点:cv2.createTrackbar和cv2.getTrackbarPos的使用)

带拖动条的均值滤波import timeimport cv2 import numpy as npdef callback(int):passcv2.namedWindow(dst,cv2.WINDOW_AUTOSIZE)# 创建trackbar (trackbarname,winname,value,count,callback,userdata) cv2.createTrackbar(ksize, dst, 3, 30, callback) cv2.createTrackbar(s…

FastAPI中如何调用同步函数

目录 一、使用app.sync装饰器 二、使用asyncio.run()函数 三、使用background参数 四、注意事项 总结 FastAPI是一个基于Python 3.6的快速Web框架&#xff0c;用于构建高效、可扩展的Web应用程序。在FastAPI中&#xff0c;可以使用同步函数来处理请求并返回响应。本文将介…

css 三栏布局的实现

三栏布局在前端页面设计中是一个常见的布局方式&#xff0c;通常包含左侧、中间和右侧三个部分。这种布局方式在多种场景中都很受欢迎&#xff0c;例如博客、新闻网站和企业官网。本文将详细介绍三栏布局的实现方法&#xff0c;包括用法、代码、深入理解&#xff0c;以及配合高…

Tomcat-安装与基础配置

Tomcat-安装与基础配置 下载 下载Tomcat9 选择适合自己系统位数的版本下载 Tomcat-目录 bin: 存放启动与关闭Tomcat的脚本文件conf: 存放Tomcat的各种配置文件,其中最主要的配置文件就是server.xml【如果端口冲突,就可以将 8080 端口修改】lib: 存放Tomcat运行时所需的j…

计算机组成学习-数据的表示和运算总结

1、进制与编码 1.1 进位计数法 常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个&#xff0c;其中A、B、C、D、E、F分别表示 10〜15。 八进制数字通常以前缀 "0"&#xff08;零&#xff09;加上数…

每天一点python——day83

#每天一点Python——83 #python报错原因 bug&#xff1a; 在计算机程序中&#xff0c;bug是指程序中的错误或故障&#xff0c;导致程序不能按照预期执行或产生不正确的结果。 这种错误可能是由编码或设计错误、运行环境不一致、输入数据异常等多种原因导致的。常见的bug类型包括…

【linux命令】 su 和 sudo 的区别

概述 共同点&#xff1a;都是root用户的权限&#xff1b; 不同点&#xff1a;su仅仅取得root权限&#xff0c;工作环境不变&#xff0c;还是在切换之前用户的工作环境&#xff1b;sudo是完全取得root的权限和root的工作环境。 一、 su 切换用户 su是switch user或 substitu…