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. 最大括号深度
题目描述 现有一字符串仅由"(",")", "{","}", "[", "]"六种括号组成。若字符串满足以下条件之一, 则为无效字符串:任一类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号输出…...
进程与线程以及如何查看
长期补充,建议关注收藏! 定义 特性进程线程定义程序执行的基本单位执行中的最小单位资源拥有独立的内存空间和资源共享进程的资源开销创建和销毁的开销较大创建和销毁的开销较小执行单位进程中可以有多个线程线程是执行单元,必须依赖于进程并…...
BlueLM:以2.6万亿token铸就7B参数超大规模语言模型
一、介绍 BlueLM 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型,本次发布包含 7B 基础 (base) 模型和 7B 对话 (chat) 模型,同时我们开源了支持 32K 的长文本基础 (base) 模型和对话 (chat) 模型。 更大量的优质数据 :高质量语料…...
Webpack学习笔记(4)
1.缓存 可以通过命中缓存降低网络流量,是网站加站速度更快。 然而在部署新版本时,不更改资源的文件名,浏览器可能认为你没有更新,所以会使用缓存版本。 由于缓存存在,获取新的代码成为问题。 接下来将配置webpack使…...
28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强
A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…...
5.interview-self-introduction
1.保证电话面试来的时候,可以接听,保持电话通常 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、慢查询基础:优化数据访问2.1 是否向数据库请求了不需要的数据2.2 MySQL是否存在扫描额外的记录 3、重构查询方式3.1 一个复杂查询还是多个简单查询3.2 切分查询3.3 分解联接查询 4、查询执行的基础4.1 MySQL的客户端/服务器通信…...
如何有效修复ffmpeg.dll错误:一站式解决方案指南
当您遇到提示“ffmpeg.dll文件丢失”的错误时,这可能导致相关的应用程序无法启动或运行异常。本文将详细介绍如何有效地解决ffmpeg.dll文件丢失的问题,确保您的应用程序能够恢复正常运行。 ffmpeg.dll是什么?有哪些功能? ffmpeg.…...
8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全
8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net[md]启动 Debug,它是可用于测试和调试 MS-DOS 可执行文件的程序。 Debug [[drive:][path] filename [parameters]] 参数 [drive:…...
查看mysql的冷数据配置比例
查看mysql的冷数据配置比例 -- 真正的LRU链表,会被拆分为两个部分,一部分是热数据,一部分是冷数据,这个冷热数据的比例是由innodb_old_blocks_pct参数控制的,它默认是37,也就是说冷数据占比37%。 show GLO…...
【Java基础面试题028】Java中的hashCode和equals方法,与==操作符有什么区别?
回答重点 hashcode、equals 和 都是Java中用于比较对象的三种方式,但是它们的用途和实现还是有挺大区别的。 hashcode用于散列存储结构中确定对象的存储位置。可用于快速比较两个对象是否不同,因为如果它们的哈希码不同,那么它们肯定不相等…...
在C#中测试比较目录的不同方法以查看它们有哪些共同的文件
C# 中的示例“比较目录以查看它们有哪些共同的文件”使用Directory.GetFiles获取两个目录中的文件。它对文件进行排序,并比较两个排序后的列表以查看哪些文件位于第一个目录中、第二个目录中或两个目录中。有关其工作原理的详细信息,请参阅该示例。 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语言的补课,如果C语言学的好,可跳过。 变量、数据类型与运算符 在 C 编程中,理解变量、数据类型和运算符是构建程序的基石…...
Halcon单相机+机器人=眼在手上#标定心得
首先,这个标定板肯定是放在我们要作业的工作台上的 目的 **1,得到标定物(工作台)与机器人底座之间的pose转换关系。2,得到相机与机器人末端tool的的转换关系。 两个不确定的定量 1,标定板与机器人底座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中,上行转换(将派生类转换为基类)是实现多态性的关键。例如,当有一个基类Animal,以及派生类Dog和Cat。如果有一个函数接受Animal类型的参数,我们可以将Dog或…...
Ubuntu 22.04永久保存路由
在 Ubuntu 22.04 上,可以按照以下方式配置让流量访问 172.19.201.207 走指定的路由。 1. 临时添加路由 临时路由规则只在当前系统会话中有效,重启后会丢失。 添加路由规则 运行以下命令: sudo ip route add 172.19.201.207 via 192.168.2…...
数据结构十大排序之(冒泡,快排,并归)
接上期: 数据结十大排序之(选排,希尔,插排,堆排)-CSDN博客 前言: 在计算机科学中,排序算法是最基础且最重要的算法之一。无论是大规模数据处理还是日常的小型程序开发,…...
OpenFeign源码
openfeign是通过FeignClientFactoryBean生成动态代理对象的方式实现http客户端无感调用,可以做到像定义接口一样写http客户端调用代码。 配置Feign接口后,我们通常会在SpringBoot项目启动类上标记EnableFeignClients,这个是生成动态代理对象的…...
OpenClaw新手入门:千问3.5-9B镜像一键部署与初体验
OpenClaw新手入门:千问3.5-9B镜像一键部署与初体验 1. 为什么选择这个组合? 去年冬天,我第一次在本地尝试用OpenClaw自动整理电脑上的照片。当时对接的是GPT-3.5,每次识别图片内容都要消耗大量token,一个月下来账单让…...
在Linux中编写shell脚本监听指定端口的实现方式
在Linux中,你可以编写一个shell脚本来监听指定端口。以下是几种实现方式:方法1:使用nc(netcat)的简单监听脚本1234567891011121314151617181920212223#!/bin/bash# 文件名:port_listener.sh# 检查参数if [ …...
何为多态?
多态的概念多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时会产生不同的行为。具体表现为父类引用指向子类对象,并在运行时根据实际对象类型调用相应的方法。多态的好处提高代码扩展性通过多态&a…...
94吨黄金“上链搬家”,手续费仅0.0016%!黄金RWA正在改写跨境资产流动
传统金融数百万美元的物流成本vs区块链毫厘之间的链上费用,资产数字化的未来已来。近日,Tether首席执行官Paolo Ardoino在X平台发文称:过去6个月内,共有价值约94吨黄金的代币化黄金XAUT在链上完成转移,合计手续费仅约0…...
2026 靠谱网站建设公司推荐|中大型企业 / 上市公司建站避坑与优选指南
摘要 在 AI 与 GEO(生成式引擎优化)主导的 2026 年,企业官网早已不是简单的展示窗口,而是品牌信任、获客转化、合规披露、全球触达的核心数字资产。选择一家靠谱的网站建设公司,直接决定企业数字化成果与长期商业价值。…...
遥感影像解译实战:从目视解译八要素到精准分类
1. 遥感影像解译的底层逻辑 第一次接触遥感影像时,我盯着屏幕上的彩色方块发懵——这堆像素点怎么能看出是森林还是农田?后来才发现,解译就像玩"大家来找茬",关键要掌握八要素这把万能钥匙。大小、形状、阴影、颜色、纹…...
插件冲突频发?三招让你的WPS回归清爽
插件冲突频发?三招让你的WPS回归清爽 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 当你在WPS中处理学术文档时,突然发现工具栏上出现了两个Zotero插…...
论文写作“智多星”:书匠策AI,开启期刊论文新纪元
在学术的广袤天地里,论文写作宛如一场充满挑战的冒险之旅。尤其是期刊论文,它不仅是学者研究成果的集中展现,更是学术交流与进步的重要桥梁。但面对选题迷茫、资料繁杂、结构搭建困难等诸多难题,许多学者常常感到力不从心。别担心…...
人机互信的瓶颈在于……
人机互信的核心瓶颈在于技术透明度不足、责任归属模糊、伦理对齐困难以及人类对技术的过度依赖与误解,这些因素共同导致了人机协作中的信任危机。一、技术层面的瓶颈1. 算法"黑箱"效应决策过程不透明,深度学习模型的内部运算过程难以解释&…...
区块链AI骗局:深扒某DeFi项目的测试造假链
当技术信任沦为欺诈工具 在软件测试领域,我们习惯于与代码、流程和标准打交道,致力于构建可靠、可验证的系统。然而,在区块链与人工智能融合的前沿地带,一场针对“信任”本身的系统性造假正在上演。本文旨在从一个软件测试工程师…...

