一、有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。示例 1:
输入:s = “()” 输出:true
示例 2:输入:s = “()[]{}” 输出:true
示例 3:输入:s = “(]” 输出:false
示例 4:输入:s = “([)]” 输出:false
示例 5:输入:s = “{[]}” 输出:true
提示:
1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成
/*
遍历每一个字符:
如果是左括号:入栈
如果是右括号:
与栈顶元素比较(前提是有栈顶元素),没有左出现了右,返回false,如果匹配,出栈
遍历完后,如果栈不为空,左多了,返回false
*/
class Solution {
public:
bool isValid(string str) {
std:: stack<char> s;
int size=str.size();
for(int i=0;i<size;i++)
{
char ch=str[i];
switch(ch)
{
case '(':
case '[':
case '{':s.push(ch);break;
case ')':
case ']':
case '}':
{
if(s.empty())
return false;
char left=s.top();
s.pop();
if(!((left=='('&&ch==

这篇博客探讨了如何使用栈解决有效括号问题,以及如何仅使用栈和队列实现先入先出(FIFO)和后入先出(LIFO)的数据结构。文章提供了具体的代码示例,包括有效括号的判断、栈实现队列以及队列实现栈的方法,并对操作的时间复杂度进行了讨论。
最低0.47元/天 解锁文章
1082

被折叠的 条评论
为什么被折叠?



