当前位置: 首页 > article >正文

leetcode22.括号生成

1.题目要求:

在这里插入图片描述

2.题目代码:

class Solution {
public:
    vector<string> result;
    string str;
    //判断字符串是否为有效括号
    bool isValid(string s) {
        stack<char> v;
        for(int i = 0;i < s.size();i++){
            if(s.at(i) == '('){
                v.push(')');
            }else{
                    if(v.size() == 0){
                        return false;
                    }
                    if(s.at(i) == v.top()){
                        v.pop();
                    }else{
                        return false;
                    }
            }
        }
        if(v.size() != 0){
            return false;
        }else{
            return true;
        }
    }
    //开始回溯
    void backtricking(string path,vector<bool>& used){
        //如果字符串的长度等于path的长度,则进行判断是否为有效括号,如果是,则放入答案数组
        if(str.size() == path.size()){
            if(isValid(str) == true){
                result.push_back(str);
            }
        }
        for(int i = 0;i < path.size();i++){
            //判断是否有重复括号
            if(i > 0&&path[i] == path[i - 1]&&used[i - 1] ==false){
                continue;
            }
            if(used[i] == false){
                str += path[i];
                used[i] = true;
                backtricking(path,used);
                //回溯的表达式
                str.pop_back();
                used[i] = false;
            }else{
                continue;
            }
        }
    }
    vector<string> generateParenthesis(int n) {
        string path;
        int i = 0;
        while(i < n){
            path += '(';
            i++;
        }
        i = 0;
        while(i < n){
            path += ')';
            i++;
        }
        vector<bool> used;
        used.resize(path.size(),false);
        backtricking(path,used);
        return result;
    }
};

http://www.kler.cn/news/361707.html

相关文章:

  • 理解JVM里的栈信息
  • Node.js初学者指南:搭建HTTP服务器、获取请求信息及响应、变量声明与NPM包管理
  • 如何彻底销毁硬盘数据
  • 基于vue框架的的二手数码产品回收管理系统bodx1(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 基于springboot家乡特色推荐系统
  • 使用SpringBoot自定义注解+AOP+redisson锁来实现防接口幂等性重复提交
  • 从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼
  • STM32_实验4_控制蜂鸣器
  • elasticsearch性能测试工具esrally
  • huggingface的数据集下载(linux下clone)
  • 好用的AI工具:探索智能生活的无限可能
  • Java 中接口的具名实现和匿名实现
  • 简述微服务高可用之Sentinel、Seate
  • 基于深度学习的地球观测中的目标检测
  • R语言医学数据分析实践-高级回归分析
  • Spring Boot Web智慧社区平台:设计与实现
  • 【Java】并发韵律:多线程编程的深度探索与艺术实践
  • 问题:uniApp 开发中使用 padding: 0 10px,右内边距不起作用
  • 装饰器模式知识分享:Android (Kotlin) 与 iOS (Swift) 实现
  • 无人机飞手执照培训为什么需要脱产学习?
  • Java的评论大冒险:用代码征服API数据
  • C++之《剑指offer》学习记录(10):链表
  • leetcode计数排序
  • 在软件开发中低耦合和高内聚是什么,如何实现,请看文章
  • 3194. 最小元素和最大元素的最小平均值 简单
  • CEEMDAN +组合预测模型(Transformer - BiLSTM + ARIMA)