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

遍历s ,并用一个栈来表示括号的深度。

遍历s ,并用一个栈来表示括号的深度。

遇到 ‘(’ 则将字符入栈,遇到 ‘)’ 则将栈顶字符出栈。栈从空到下一次空的过程,则是扫描了一个原语的过程。一个原语中,首字符和尾字符应该舍去,其他字符需放入结果字符串中。因此,在遇到 ‘(’ 并将字符入栈后,如果栈的深度为 1 ,则不把字符放入结果;在遇到 ‘)’ 并将栈顶字符出栈后,如果栈为空,则不把字符放入结果。

其他情况下,需要把字符放入结果。代码对流程进行了部分优化,减少了判断语句。

代码

Python3

class Solution: def removeOuterParentheses(self, s: str) -> str: res, stack = "", [] for c in s: if c == ')': stack.pop() if stack: res += c if c == '(': stack.append(c) return res

C++

class Solution { public: string removeOuterParentheses(string s) { string res; stack<char> st; for (auto c : s) { if (c == ')') { st.pop(); } if (!st.empty()) { res.push_back(c); } if (c == '(') { st.emplace(c); } } return res; } };

Java

class Solution { public String removeOuterParentheses(String s) { StringBuffer res = new StringBuffer(); Deque<Character> stack = new ArrayDeque<Character>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == ')') { stack.pop(); } if (!stack.isEmpty()) { res.append(c); } if (c == '(') { stack.push(c); } } return res.toString(); } }

复杂度分析

时间复杂度:O(n),其中 n 是输入 s 的长度。仅需遍历 s 一次。
空间复杂度:O(n),其中 n 是输入 s 的长度。需要使用栈,长度最大为 O(n)。

http://www.jsqmd.com/news/919185/

相关文章:

  • 2026年树洞聊天平台隐私实测:游戏中的心事同样要安全保护 - 时时资讯
  • HW蓝队实战:用HFish蜜罐在Windows上快速搭建一个“诱饵”服务器(附ThinkPHP服务配置)
  • 软考 系统架构设计师历年真题集萃(269)
  • Windows 11的WLAN图标不见了?别急着重装系统,试试这个设备管理器里的隐藏选项
  • 晋中家庭教育指导师报名入口与流程:推荐官方授权机构中山优才教育 - 实时教育培训动态
  • LangChain4j 如何实现 RAG(检索增强生成)?请简述完整流程及其核心组件。
  • 【AI工具版权避坑指南】:20年法律+技术双背景专家亲授3大高危场景与5步合规自查法
  • 校园失物招领系统原型设计——让每一件失物都能找到回家的路
  • 2026论文爆款降AI率软件大曝光:一键抹平AI痕迹稳过知网! - 降AI小能手
  • 别再只会点灯了!用STM32F407的PWM驱动舵机,做个会动的机械臂原型(附完整代码)
  • VAD不止于识别:聊聊语音端点检测在降噪、编码和IoT设备里的那些事儿
  • 上海家庭教育指导师正规报名入口:中山优才教育 - 当下教育培训干货
  • AI初创公司如何避免盲目行动:从技术驱动到市场验证的生存指南
  • ArcGIS Pro新手避坑指南:从Excel到shp,搞定坐标系和字段映射的3个关键点
  • Multisim 13.0 高频电路仿真:手把手教你搭建晶体管集电极调幅电路(含频谱分析)
  • 避坑指南:WebRTC流媒体服务Docker化部署,从局域网测试到公网可访问的完整配置流程
  • 基于小程序的酒店客房管理系统毕业设计
  • 搞定SAP SMARTFORMS表格布局:手把手教你调整列宽、行高和解决‘画布溢出’报错
  • 仓储数字孪生选型避坑指南:五大要素必看
  • 保姆级教程:在Ubuntu 22.04 LTS上搞定TPM2-Tools安装与基础命令测试
  • 你的测试覆盖够了吗?手把手用VectorCAST/QA分析C++项目覆盖率,生成老板爱看的Dashboard报告
  • 别再只用yum了!CentOS 7/8上两种安装Node.js 16.x的保姆级对比(含环境变量配置)
  • A9G模块通过AT指令实现MQTT订阅:从网络配置到消息接收全流程详解
  • 184、运动控制中的行业应用:SCARA机器人
  • 基于Arduino与Dynamixel的智能遥控拖船:集成4DOF机械臂与FPV的机器人平台实践
  • 九大网盘直链下载高效解决方案:LinkSwift智能下载助手完全指南
  • 从Kettle 8.2升级到9.3踩的坑:官网下载和Hadoop Shims依赖问题全记录
  • PCIe/USB3.0弹性缓冲器深度计算实战:从协议规范到Verilog实现避坑指南
  • 8086 FLAGS标志位详解
  • 向量数据库响应延迟飙至8s?不是QPS过高——揭秘Milvus/Weaviate底层Segment分裂引发的隐性阻塞(仅头部12家AI平台知晓)