编辑
2024-03-06
LeetCode
00
请注意,本文编写于 375 天前,最后修改于 375 天前,其中某些信息可能已经过时。

目录

有效的括号
题解

有效的括号

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

提示:

1 <= s.length <= 104

s 仅由括号 '()[]{}' 组成

有效的括号

c++
class Solution { public: bool isValid(string s) { int len=s.length(); stack<char>sk; for(int i=0;i<len;i++){ if(sk.empty()==0){ char str=sk.top(); switch(str){ case '(': if(s[i]==')'){ sk.pop(); break; } else{ sk.push(s[i]); break; } case '[': if(s[i]==']'){ sk.pop(); break; } else{ sk.push(s[i]); break; } case '{': if(s[i]=='}'){ sk.pop(); break; } else{ sk.push(s[i]); break; } } } else{ sk.push(s[i]); } } if(sk.empty()){ return true; } else{ return false; } } };

题解

栈是一种常见的严格限制处理顺序的线性表数据结构,遵循后进先出原则。

栈的使用场景有:

编程语言的内存管理

函数调用时的上下文管理

深度优先搜索 DFS

有效的的括号(题解)

c++
std::stack<char> st; for (char c : s) { if (c == '(' || c == '[' || c == '{') { st.push(c); } else { if (st.empty()) return false; char top = st.top(); if ((c == ')' && top == '(') || (c == ']' && top == '[') || (c == '}' && top == '{')) { st.pop(); } else { return false; } } } return st.empty();

本文作者:古月流新

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!