当前位置:网站首页 > 技术博客 > 正文

栈的括号匹配算法程序



 

 
在这里插入图片描述

 

 

 

 
  

 

 

 

经典的栈
在这里插入图片描述

 
  

 

 

变体1——不止是小括号

思路变体:【经典的栈】 + 【Map】

▊【Q20】(ez) 有效的括号(括号匹配问题)
 
   给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。
  
有效字符串需满足:
   左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
 
示例 1:
   输入: “([{}])”
   输出: true
示例 2:
   输入: “([)]”
   输出: false











 
  

 
 
变体2——自己生成括号

思路变体:【回溯】 + 【左右括号计数】

这里利用了一个括号字符串的性质进行【剪枝】:当右括号数量超过左括号时,必然串无效——这个性质之后还会再派上大用场

▊【Q22】(md) 括号生成
   数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 
示例:
输入
   n = 3
输出:[
   “((()))”,
   “(()())”,
   “(())()”,
   “()(())”,
   “()()()”
   ]









 
  

 

 

 

究极变体,由定性到定量——寻找最长有效括号的长度
 
我们将从【】【动态规划】【左右括号计数】三个角度去攻克这个问题
 


【Q32】(hd) 最长有效括号
 
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
 
示例 1:



输入: “(()”
输出: 2
 
示例 2:
输入: “)()())”
输出: 4
 
示例 3:
输入: “()(())”
输出: 4








 
 
在这里插入图片描述

 
  

 

 
 
在这里插入图片描述

 
  

 

在这里插入图片描述

 
  

 

 

 

 

 

 

 

 

 

 

 

 

 

部分题目来源

【Leetcode Q20】有效的括号

【Leetcode Q22】括号生成

【Leetcode Q32】最长有效括号

 

 

End ♬ By a Lolicon

  • 上一篇: 先进半导体贴吧
  • 下一篇: pm2 deploy
  • 版权声明


    相关文章:

  • 先进半导体贴吧2025-08-06 18:01:04
  • 生成二维码的jar包2025-08-06 18:01:04
  • 单臂路由原理及图解2025-08-06 18:01:04
  • okhttp入门2025-08-06 18:01:04
  • 单元测试是功能测试吗2025-08-06 18:01:04
  • pm2 deploy2025-08-06 18:01:04
  • 桥接模式 虚拟机2025-08-06 18:01:04
  • c语言最简单的数据类型2025-08-06 18:01:04
  • 程序员入门2025-08-06 18:01:04
  • 图的遍历的实现数据结构课程设计2025-08-06 18:01:04