leetcode 有效的括号
判断有效的括号
题目如下
解题思路
如果字符串的长度不是2的倍数,则必定没有包含完整的括号
需要一个辅助的数据结构 栈
遍历字符串,遇到括号的左半括号,压入栈中,遇到括号的右半括号,判断从栈顶元素是否是所遇到右半括号的左边。是的话,将栈顶元素弹出,进行下一步判断,不是返回false。
这里我们还需要一个保存左半括号和右半括号的关系,需要一个额外的数据结构–哈希表
//创建一个哈希表 来存储(),[],{}的关系map<char,char> m; //长度为3m[')'] = '(';m[']'] = '[';m['}'] = '{';
在执行结束后,还需要检查一下,栈内是否还存在元素
完整代码
class Solution {public:bool isValid(string s) {int length = s.size();if(length % 2 != 0){return false;}//创建一个栈数据结构,用来保存左侧的符号stack<char> st;//创建一个哈希表 来存储(),[],{}的关系map<char,char> m; //长度为3m[')'] = '(';m[']'] = '[';m['}'] = '{';for(int i = 0;i < length; ++i){//判断此字符是否是括号的左侧部分//如果是 压入堆栈中if(s[i] == '{' || s[i] == '(' ||s[i] == '[' ) {st.push(s[i]);}else{if(st.empty()){return false;}//如果当前位置的字符元素在哈希表中的映射 与 栈顶元素不同if(m[s[i]] != st.top() ){//意味着错误return false;}//相同 弹出栈顶元素,进入下一轮循环else{st.pop();}}}if(st.empty()){return true;}return false;}
};
leetcode 有效的括号相关推荐
- LeetCode 921. 使括号有效的最少添加(栈)
1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...
- LeetCode 1111. 有效括号的嵌套深度(奇偶分离)
1. 题目 有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一: 空字符串 连接,可以记作 AB(A 与 B 连接),其中 A 和 B 都是 ...
- 【力扣LeetCode】22 括号生成
题目描述(难度中) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &qu ...
- LeetCode Algorithm 22. 括号生成
22. 括号生成 Ideas 这是一道动态规划的题目,关于动态规划的题目我们可以从n比较小的情况下开始逐步分析. 当n=1时,["()"] 当n=2时,["()()&qu ...
- LeetCode 算法 856. 括号的分数
856. 括号的分数 Ideas 遇到括号那基本就是用栈了. 括号的分数会因为深度的增加而成倍增加,所以利用栈的时候需要记录深度. 遇到一个(的时候,将深度+1,并且新的深度得分置为0,遇到一个)的时 ...
- LeetCode 20.有效括号
原题链接 方法一:解题思路,使用栈 + 模拟法:首先遍历将是左括号形式的部分压入栈中.然后对于右括号形式与栈顶元素进行比对,看是否匹配.如果匹配的话删除栈顶元素,不匹配直接返回false.最后栈为 ...
- LeetCode 1111. 有效括号的嵌套深度
1111. 有效括号的嵌套深度 思路:我们只需要把奇数层的 ( 分配给 A,偶数层的 ( 分配给 B 即可 //'(' 时奇数为1,偶数为0 class Solution { public:vecto ...
- LeetCode 堆栈队列 —— 括号匹配(20、232、155)
1. 堆栈(stack) 20,20. Valid Parentheses,括号匹配,堆栈(python 中使用 list 即可实现表示堆栈,list.append:入栈,list.pop():出栈) ...
- 2022-3-25 Leetcode 921.使括号有效
第一版,我还是 too young,too naive class Solution {public:int minAddToMakeValid(string s) {int deep = 0;for ...
- LeetCode有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
最新文章
- shell中的函数及脚本调试方法
- [小猫学NA]CCNA学习指南第二章笔记
- 销售流程图_每天一个流程图制作——销售发货业务流程图-19
- uboot,eboot和bootloader的联系
- 蓝桥杯第九届省赛JAVA真题----螺旋折线
- c# oldb连接_如何使用C#中的OleDbConnection 连接读取Excel?
- 【华为云技术分享】机器学习(02)——学习资料链接
- uni app 调用网络打印机_uni-app封装一个request请求
- TensorFlow、PyTorch 之后,“国产”AI 框架还有没有机会?
- Truecrypt隐形操作系统终极方案
- GB28181国标协议
- 为什么仿宋字体打印出楷体_win7仿宋字体及楷体字体打包下载
- PCB邮票孔拼板AD软件制作教程
- 8. G1垃圾收集日志
- 【精品】机器学习模型可解释的重要及必要性
- 帝国CMS灵动标签e:loop
- 丅rust是什么意思_rust是什么意思_rust的翻译_音标_读音_用法_例句_爱词霸在线词典...
- oscp——Hacker Fest: 2019
- 一文读懂「用户行为数据」的采集、分析和应用
- RMA直接接收入库Interface导入
热门文章
- 云计算laas、paas、saas介绍和分类
- SLAM AR 技术与应用
- 学习java第14天
- 自动驾驶汽车是如何利用高精度地图和高精度定位来导航
- Vsan节点报“Power-on Reset”和“Could not open device ‘naa...‘ for probing: Busy”错误处理记录
- xtu ACM Eason
- 全网搜php,PHP实现中文全文搜索的原理介绍
- 地理信息系统GIS基础知识
- Red Hat Linux 9.0 网络服务入门
- 金昌搜索引擎优化网络推广_金昌网站推广,金昌网站推广平台,金昌企业网站推广-奇秀云AI智能推广系统-奇秀网...