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

12. 最大括号深度

题目描述

现有一字符串仅由"(",")", "{","}", "[", "]"六种括号组成。若字符串满足以下条件之一,

则为无效字符串:任一类型的左右括号数量不相等

存在未按正确顺序(先左后右)闭合的括号输出括号的最大嵌套深度,若字符串无效则输出0。

0<=字符串长度<=100000

输入描述

一个只包括(,’)’,’{‘,”}”,[,”]”的字符串

输出描述

整数,最大的括号深度

用例

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.一个合法的括号匹配序列有以下定义:

(1)空串“”是一个合法的括号匹配序列

(2)如果“X”和“Y”都是合法的括号匹配序列,“XY”也是一个合法的括号匹配序列

(3)如果“X”是一个合法的括号匹配序列,那么“(X)”也是一个合法的括号匹配序列

(4)每个合法的括号序列都可以由以上规则生成。

2.对于一个合法的括号序列我们又有以下定义它的深度:

(1)空串“”的深度为0

(2)如果字符串“X”的深度是x,字符串“Y”的深度是y,那么字符串“XY”的深度为max(X,Y)

(3)如果“X”的深度是x,那么字符串“(X)”的深度是x+1

3.输入描述:输入包括一个合法的括号序列s,s长度length大于等于2小于等于50,序列中只包含括号(有两道题,一道题是只包括小括号,还有一道题是包括小括号中括号和大括号)

4.输出描述:输出一个正整数,即这个序列的深度

二、解题思路

1.先说只有小括号的情况(一定是合法的)

2.如果只有小括号(且输入合法),我们需要判断深度的话

3.定义一个整数int depth = 0;用来代表深度,定义一个整数int maxdepth = 0;

4.如果遇到左括号,depth增加1,然后如果depth大于maxdepth,maxdepth更新值

5.如果遇到右括号,depth减少1,

6.最后输出maxdepth就是最大深度了

#include <stdio.h>
#include <string.h>
int main() {char str[1000];scanf("%s", str);int depth = 0;int maxdepth = 0;int len = strlen(str);for(int i = 0; i < len; i++) {if(str[i] == '(') {depth++;} else if(str[i] == ')') {depth--;}if(depth > maxdepth) maxdepth++;}printf("%d\n", maxdepth);return 0;
}

1.然后再说有方括号大括号和括号三种括号的情况(并且有可能输入不合法)

2.如果输入不合法(比如左右括号不对称、未按正确顺序闭合)那么输出0

3.我们可以定义一个字符串数组char left[1000];用来记录遇到的括号

4.它的索引值为int idx = 0;我们遍历字符串char str[1000];,每遇到一个左括号,我们将这种类型的左括号放到栈顶,然后idx++

5.我们还需要在前面定义一个int maxdepth = 0;如果遇到的是左括号idx++之后,

6.比较idx和maxdepth的值,如果idx比较大,maxdepth更新值

7.如果我们遇到的是右括号,我们与左括号作比较,如果是同一类型的,那么我们idx--

8.如果是不同类型的,我们认为输入不合法,我们需要在前面定义一个bool valid = true;

9.如果遇到输入不合法的情况,那么我们valid = false;并且break;出循环

10.遍历完字符串以后,如果idx != 0;那么我们认为不合法valid = false;

11.最后,如果不合法,我们输出0,否则的话我们输出maxdepth的值

12.然后返回return 0;

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main() {char str[1000];scanf("%s", str);char left[1000];int idx = 0;int maxdepth = 0;int len = strlen(str);bool valid = true;for (int i = 0; i < len; i++) {// printf("test i = %d\n", i);if (str[i] == '(' || str[i] == '[' || str[i] == '{') {// printf("遇到左括号\n");left[idx++] = str[i];if (idx > maxdepth) maxdepth = idx;// printf("idx = %d\n", idx);// printf("maxdepth = %d\n", maxdepth);} else if (str[i] == ')') {// printf("遇到)括号\n");if (left[idx - 1] == '(') idx--;else valid = false;} else if (str[i] == ']') {// printf("遇到]括号\n");if (left[idx - 1] == '[') idx--;else valid = false;} else if (str[i] == '}') {// printf("遇到}括号\n");if (left[idx - 1] == '{') idx--;else valid = false;} else {valid = false;}if (valid == false) break;}if (idx != 0) valid = false;if (valid) printf("%d\n", maxdepth);else printf("0\n");return 0;
}

相关文章:

12. 最大括号深度

题目描述 现有一字符串仅由"("&#xff0c;")", "{","}", "[", "]"六种括号组成。若字符串满足以下条件之一&#xff0c; 则为无效字符串:任一类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号输出…...

进程与线程以及如何查看

长期补充&#xff0c;建议关注收藏&#xff01; 定义 特性进程线程定义程序执行的基本单位执行中的最小单位资源拥有独立的内存空间和资源共享进程的资源开销创建和销毁的开销较大创建和销毁的开销较小执行单位进程中可以有多个线程线程是执行单元&#xff0c;必须依赖于进程并…...

BlueLM:以2.6万亿token铸就7B参数超大规模语言模型

一、介绍 BlueLM 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;本次发布包含 7B 基础 (base) 模型和 7B 对话 (chat) 模型&#xff0c;同时我们开源了支持 32K 的长文本基础 (base) 模型和对话 (chat) 模型。 更大量的优质数据 &#xff1a;高质量语料…...

Webpack学习笔记(4)

1.缓存 可以通过命中缓存降低网络流量&#xff0c;是网站加站速度更快。 然而在部署新版本时&#xff0c;不更改资源的文件名&#xff0c;浏览器可能认为你没有更新&#xff0c;所以会使用缓存版本。 由于缓存存在&#xff0c;获取新的代码成为问题。 接下来将配置webpack使…...

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法&#xff1a;无模型水下图像增强方法&#xff1a;基于深度学习的水下图像增强方法&#xff1a; 论文方法概述像素分布…...

5.interview-self-introduction

1.保证电话面试来的时候&#xff0c;可以接听&#xff0c;保持电话通常 interviews will be arranged recently.please keep your phone line open and make sure you can answer th call when the phone interview comes. speak loudly and slow down your speaking voice &a…...

高性能MySQL-查询性能优化

查询性能优化 1、为什么查询这么慢2、慢查询基础&#xff1a;优化数据访问2.1 是否向数据库请求了不需要的数据2.2 MySQL是否存在扫描额外的记录 3、重构查询方式3.1 一个复杂查询还是多个简单查询3.2 切分查询3.3 分解联接查询 4、查询执行的基础4.1 MySQL的客户端/服务器通信…...

如何有效修复ffmpeg.dll错误:一站式解决方案指南

当您遇到提示“ffmpeg.dll文件丢失”的错误时&#xff0c;这可能导致相关的应用程序无法启动或运行异常。本文将详细介绍如何有效地解决ffmpeg.dll文件丢失的问题&#xff0c;确保您的应用程序能够恢复正常运行。 ffmpeg.dll是什么&#xff1f;有哪些功能&#xff1f; ffmpeg.…...

8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全

8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net[md]启动 Debug&#xff0c;它是可用于测试和调试 MS-DOS 可执行文件的程序。  Debug [[drive:][path] filename [parameters]]  参数  [drive:…...

查看mysql的冷数据配置比例

查看mysql的冷数据配置比例 -- 真正的LRU链表&#xff0c;会被拆分为两个部分&#xff0c;一部分是热数据&#xff0c;一部分是冷数据&#xff0c;这个冷热数据的比例是由innodb_old_blocks_pct参数控制的&#xff0c;它默认是37&#xff0c;也就是说冷数据占比37%。 show GLO…...

【Java基础面试题028】Java中的hashCode和equals方法,与==操作符有什么区别?

回答重点 hashcode、equals 和 都是Java中用于比较对象的三种方式&#xff0c;但是它们的用途和实现还是有挺大区别的。 hashcode用于散列存储结构中确定对象的存储位置。可用于快速比较两个对象是否不同&#xff0c;因为如果它们的哈希码不同&#xff0c;那么它们肯定不相等…...

在C#中测试比较目录的不同方法以查看它们有哪些共同的文件

C# 中的示例“比较目录以查看它们有哪些共同的文件”使用Directory.GetFiles获取两个目录中的文件。它对文件进行排序&#xff0c;并比较两个排序后的列表以查看哪些文件位于第一个目录中、第二个目录中或两个目录中。有关其工作原理的详细信息&#xff0c;请参阅该示例。 Kur…...

harbor离线安装 配置https 全程记录

1. 下载harbor最新版本 下载网址: 找最新的版本: https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz 这里我直接使用迅雷下载, 然后上传 1.1解压 sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /opt/ 2. 配置Harb…...

C++简明教程(文章要求学过一点C语言)(5)

在开始之前必须阅读这个文章 https://blog.csdn.net/weixin_45100742/article/details/135152562 这篇文章完全是对C语言的补课&#xff0c;如果C语言学的好&#xff0c;可跳过。 变量、数据类型与运算符 在 C 编程中&#xff0c;理解变量、数据类型和运算符是构建程序的基石…...

Halcon单相机+机器人=眼在手上#标定心得

首先&#xff0c;这个标定板肯定是放在我们要作业的工作台上的 目的 **1&#xff0c;得到标定物&#xff08;工作台&#xff09;与机器人底座之间的pose转换关系。2&#xff0c;得到相机与机器人末端tool的的转换关系。 两个不确定的定量 1&#xff0c;标定板与机器人底座b…...

【hackmyvm】Diophante 靶场

1. 基本信息^toc 这里写目录标题 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描2.3. knock 3. WordPress利用3.1. wpscan扫描3.2. smtp上传后门 4. 提权4.1. 提权leonard用户4.2. LD劫持提权root 靶机链接 https://hackmyvm.eu/machines/machine.php?vmDiophante 作者…...

C++类的继承关系中什么时候要用到上行转换和下行转换

一、C类继承关系中的上行转换 1. 多态性实现 在C中&#xff0c;上行转换&#xff08;将派生类转换为基类&#xff09;是实现多态性的关键。例如&#xff0c;当有一个基类Animal&#xff0c;以及派生类Dog和Cat。如果有一个函数接受Animal类型的参数&#xff0c;我们可以将Dog或…...

Ubuntu 22.04永久保存路由

在 Ubuntu 22.04 上&#xff0c;可以按照以下方式配置让流量访问 172.19.201.207 走指定的路由。 1. 临时添加路由 临时路由规则只在当前系统会话中有效&#xff0c;重启后会丢失。 添加路由规则 运行以下命令&#xff1a; sudo ip route add 172.19.201.207 via 192.168.2…...

数据结构十大排序之(冒泡,快排,并归)

接上期&#xff1a; 数据结十大排序之&#xff08;选排&#xff0c;希尔&#xff0c;插排&#xff0c;堆排&#xff09;-CSDN博客 前言&#xff1a; 在计算机科学中&#xff0c;排序算法是最基础且最重要的算法之一。无论是大规模数据处理还是日常的小型程序开发&#xff0c;…...

OpenFeign源码

openfeign是通过FeignClientFactoryBean生成动态代理对象的方式实现http客户端无感调用&#xff0c;可以做到像定义接口一样写http客户端调用代码。 配置Feign接口后&#xff0c;我们通常会在SpringBoot项目启动类上标记EnableFeignClients&#xff0c;这个是生成动态代理对象的…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...