【华为面试基础题】最大括号深度

描述

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

  1. 任意类型的左右括号数量不相等
  2. 存在未按正确顺序(先左后右)闭合的括号, 输出括号的最大嵌套深度,若字符串无效则输出 0。
    0 <= 字符串长度 <= 100000

输入描述:
一个只包括 '(', ')', '{', '}', '[', ']' 以一共6种字符的字符串。

输出描述:
一个整数,表示最大的括号深度。若字符串无效,则输出 0

示例1

输入:[]
输出:1
说明:该字符串有效,且最大嵌套深度为 1

示例2

输入:([]{()})
输出:3
说明:该字符串有效,且最大嵌套深度为 3

示例3

输入:(]
输出:0
说明:该字符串无效

示例4

输入:([)]
输出:0
说明:该字符串无效

示例5

输入:)(
输出:0
说明:该字符串无效

解题思路

  1. 首先,创建一个空栈stack用于存储遇到的左括号。
  2. 初始化最大深度max_depth为0。
  3. 遍历字符串s中的每个字符c
    • 如果c是左括号('(', '[', '{'),将其压入栈中,并更新最大深度max_depth为当前栈的长度和已知最大深度之间的较大值。
    • 如果c是右括号(')', ']', '}'),则检查栈是否为空,或者栈顶元素是否与当前右括号匹配。如果不匹配,说明括号不匹配,返回0。如果匹配,将栈顶元素弹出。
  4. 遍历结束后,如果栈为空,说明所有括号都匹配,返回最大深度max_depth;否则,说明有未匹配的括号,返回0。
def max_depth(s):stack = []max_depth = 0for c in s:if c in '([{':stack.append(c)max_depth = max(max_depth, len(stack))elif c in ')]}':if not stack or (c == ')' and stack[-1] != '(') or (c == ']' and stack[-1] != '[') or (c == '}' and stack[-1] != '{'):return 0stack.pop()return max_depth if not stack else 0# 测试示例
print(max_depth("[]"))  # 输出:1
print(max_depth("([]{()})"))  # 输出:3
print(max_depth("(]"))  # 输出:0
print(max_depth("([)]"))  # 输出:0
print(max_depth(")("))  # 输出:0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统

随着元宇宙、VR、AR等新技术的快速发展&#xff0c;旅游服务也更加多元化、智能化。景区导览系统作为旅游服务的重要组成部分&#xff0c;其形式更加多元化智能化。智能导览系统作为一种新的服务方式&#xff0c;能够为游客提供更加便捷的旅游服务和游览体验&#xff0c;也逐渐…

随机采样一致性识别模型 Ransac

pclpy 随机采样一致性识别模型 Ransac 一、算法原理1.背景2.运行说明1.显示带异常值的平面点云2.显示根据平面模型的随机采样一致性得到的平面点云3.显示带异常值的球形点云4.显示根据球形模型的随机采样一致性得到的球形点云 二、代码三、结果1.显示带异常值的平面点云2.显示根…

linux网络查看配置与docker网络删除

注意&#xff1a;如果设置网络不生效&#xff0c;查看是使用bin下面的route还是sbin下面的&#xff0c;通过如下命令复制一样&#xff0c;在启动的时候可以查看加载网络配置文件 [rootlocalhost ~]# tail -f /var/log/messages Feb 28 11:48:12 localhost systemd: boot-init-…

【C++干货基地】C++:函数重载(深度解析Windows和Linux下函数的修饰规则)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

测试开发(6)软件测试教程——自动化测试selenium(自动化测试介绍、如何实施、Selenium介绍 、Selenium相关的API)

接上次博客&#xff1a;测试开发&#xff08;5&#xff09;测试分类标准 &#xff1a;按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分-CSDN博客 目录​​​​​​​ 什么是自动化测试 自动化测试介绍…

ES-ES的基本概念

ES的基本概念 一、文档 1.1 文档相关概念 ES是面向文档的&#xff0c;文档是所有可搜索数据的最小单位&#xff0c;可以对比理解为关系型数据库中的一条数据 日志文件中的一条日志信息一本电影的具体信息/一张唱片的详细信息 文档会被序列化成JSON格式保存在ES中 JSON对象由…

【LeetCode】升级打怪之路 Day 08:反转字符串

今日题目&#xff1a; 344. 反转字符串541. 反转字符串 II151. 反转字符串中的单词 目录 LC 344. 反转字符串 【easy】LC 541. 反转字符串 II 【easy】LC 151. 反转字符串中的单词 【better】 ⭐⭐⭐ 今天主要完成了三道与字符串反转有关的题目&#xff0c;整体难度不大&#x…

react-组件进阶

1.目标 能够实用props接收数据 能够实现父子组件之间的通讯 能够实现兄弟组件之间的通讯 能够给组件添加props校验 能够说出生命周期常用的钩子函数 能够知道高阶组件的作用 2.目录 组件通讯介绍 组件的props 组件通讯的三种方式 Context props深入 组件的生命周期 Render-p…

数据结构:循环队列

一、队列的概念 操作受限的线性表&#xff0c;允许在队列的一端执行入队操作&#xff0c;另一端执行出队操作 先进先出(FIFO) 1.顺序队列 物理结构连续&#xff0c;依赖于数组实现 队列中有一个队头指针和队尾指针&#xff0c;队头指针保存每次要出队的元素&#xff0c;队…

SpringCloud--Nacos解析

一、Nacos简介 Spring Cloud Alibaba Nacos是一个用于动态服务发现、配置管理和服务管理的平台&#xff0c;是阿里巴巴开源的一个项目&#xff0c;旨在简化微服务架构中的服务治理。Nacos 提供了一组简单易用的特性集&#xff0c;可以快速的实现动态服务发现、服务配置、服务元…

2024食品工程与智慧农业国际学术会议(ICFESA2024)

2024食品工程与智慧农业国际学术会议(ICFESA2024) 一、【会议简介】 2024食品工程与智慧农业国际学术会议&#xff08;ICFESA2024&#xff09;是一个专注于食品工程和智慧农业领域的国际学术会议。会议将在杭州举行&#xff0c;该会议旨在汇聚全球相关领域的专家学者&#xff…

LiveGBS流媒体平台GB/T28181功能-查看国标设备下通道会话列表直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话

LiveGBS流媒体平台GB/T28181功能-查看直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话 1、会话列表2、会话类型3、搭建GB28181视频直播平台 1、会话列表 LiveGBS-> 国标设备-》点击在线状态 点击会话列表 2、会话类型 下拉会话类型可以看到 直播会话、回放会话、下载…

Windows网络问题:局域网内电脑连接wifi连不上

Windows网络问题&#xff1a;局域网内电脑连接wifi连不上 前提连接的网络没有问题 1、身边是否有人能连接上此网络 2、判断是否是无线网络的问题&#xff0c;寻找有线网络尝试 3、通过手机热点测试是否是电脑本身问题 经过上述的几步判断&#xff0c;如果是电脑本身的问题进行…

pytorch中的setattr和getattr:多层网络堆叠

同一个网络模块的多层叠加是深度学习中常用的操作&#xff0c;如果使用nn.Sequential将这些模块叠加到一起就会显得很呆&#xff1a; self.blocknn.Sequential(capsule_net(),capsule_net(),capsule_net(),capsule_net(),capsule_net(),capsule_net(), )对于这种方法&#xff0…

Qt中tableView控件的使用

tableView使用注意事项 tableView在使用时&#xff0c;从工具栏拖动到底层页面后&#xff0c;右键进行选择如下图所示&#xff1a; 此处需要注意的是&#xff0c;需要去修改属性&#xff0c;从UI上修改属性如下所示&#xff1a; 也可以通过代码修改属性&#xff1a; //将其设…

栈和队列——c语言实现栈

本节复习栈和队列中栈的增删查改。 首先回顾一下栈的性质&#xff1a; 栈的存储数据的原则是“后入先出”&#xff0c; 先入的在栈底&#xff0c; 后入的在栈顶。 弹出数据时在栈顶弹出。 开始实现栈的接口 栈的所有函数接口 //栈的初始化 void StackInit(Stack* pst); //入栈…

某查查首页瀑布流headers加密

目标网站&#xff1a; 某查查 对目标网站分析发现 红框内的参数和值都是加密的&#xff0c;是根据算法算出来的&#xff0c;故进行逆向分析。 由于没有固定参数名&#xff0c;只能通过搜索headers&#xff0c;在搜索的位置上打上断点&#xff0c;重新请求。 断点在此处断住&a…

解决“source ~/.bashrc 无效”的问题

dockerfile 在执行 RUN source ~/.bashrc 的时候会报错&#xff1a; RUN source ~/.bashrc: 0.188 /bin/sh: 1: source: not found 原因 dockerfile默认的shell是sh&#xff0c;无法使用source 解决方案 在 RUN source ~/.bashrc 前面添加以下指令&#xff0c;将shell改为ba…

Vue/React 前端高频面试

说一说vue钩子函数 钩子函数是Vue实例创建和销毁过程中自动执行的函数。按照组件生命周期的过程分为&#xff1a;挂载阶段 -> 更新阶段 -> 销毁阶段。 每个阶段对应的钩子函数分别为&#xff1a;挂载阶段&#xff08;beforeCreate&#xff0c;created&#xff0c;befor…

半小时到秒级,京东零售定时任务优化怎么做的?

导言&#xff1a; 京东零售技术团队通过真实线上案例总结了针对海量数据批处理任务的一些通用优化方法&#xff0c;除了供大家借鉴参考之外&#xff0c;也更希望通过这篇文章呼吁大家在平时开发程序时能够更加注意程序的性能和所消耗的资源&#xff0c;避免在流量突增时给系统…