算法题每日一练---第68天:有效的括号

简介: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

4.png

一、问题描述


给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。


题目链接:有效的括号


二、题目要求


样例 1

输入: s = "()"
输出: true


样例 2

输入: s = "([)]"
输出: false


考察

字符串、栈、哈希
建议用时20~35min


三、问题分析


这一题需要用到栈的相关知识点,如果没了解过栈的可以看一下这一篇文章,栈其实就是先进后出的存储结构。

对于这一题的有效括号,我们可以先定义哈希表m特定化不同的6个括号。

map<char,int>m={{'(',1},{'{',2},{'[',3},
                {')',4},{'}',5},{']',6}};



只要前3个括号出现,那么就存储到栈里面去,后三个出现那么肯定要进行括号匹配消除的。 消除的话,如果和栈第一个括号匹配成功,那么就弹出栈顶。

如果匹配不成功,后三个括号入栈,那就完了,因为无论你后面有再多的括号,它也匹配不了,直接退出就行。


四、编码实现


classSolution {
public:
boolisValid(strings) {
inti,n=s.size();//初始化数据boolflag=true;//一开始判断匹配成功stack<char>k;
map<char,int>m={{'(',1},{'{',2},{'[',3},//哈希存储括号                        {')',4},{'}',5},{']',6}};
for(i=0;i<n;i++)//循环判断        {
if(m[s[i]]<=3)//前三个直接存储k.push(s[i]);
elseif(!k.empty()&&m[s[i]]-3==m[k.top()])//后三个与栈顶匹配消除k.pop();
else//匹配失败            {
flag=false;
break;
            }
        }
if(!k.empty())//如果栈不为空,那也匹配失败flag=false;
returnflag;//返回结果    }
};

五、测试结果51.png

相关文章
|
6月前
|
存储 算法 编译器
米哈游面试算法题:有效的括号
米哈游面试算法题:有效的括号
76 0
|
12天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
1月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
68 0
|
3月前
|
算法 C++
第一周算法设计与分析 H : 括号匹配
这篇文章介绍了解决算法问题"括号匹配"的方法,通过使用栈来检查给定字符串中的括号是否合法匹配,并提供了相应的C++代码实现。
|
5月前
|
算法 Java C语言
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
44 1
|
5月前
|
算法 C语言 计算机视觉
【数据结构与算法 经典例题】括号匹配问题
【数据结构与算法 经典例题】括号匹配问题
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
6月前
|
算法 安全 Java
【算法训练-栈 一】【结构特性】有效的括号、最小栈(包含Min函数的栈)
【算法训练-栈 一】【结构特性】有效的括号、最小栈(包含Min函数的栈)
73 0
|
5月前
|
算法 C语言
数据结构和算法学习记录——特殊线性表之栈(下)-销毁栈函数、判断栈是否为空、压栈函数、出栈函数、取栈顶元素、计算栈中有多少个元素、栈有关习题-有效的括号
数据结构和算法学习记录——特殊线性表之栈(下)-销毁栈函数、判断栈是否为空、压栈函数、出栈函数、取栈顶元素、计算栈中有多少个元素、栈有关习题-有效的括号
36 0