有效的括号-力扣

栈适合用来解决匹配问题。

  • 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false

  • 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false

  • 第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false

  • 当字符串遍历完之后,栈是空的,就说明全都匹配了。

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        for(auto ch : s){
            if(ch == '('){
                st.push(')');
            }else if(ch == '['){
                st.push(']');
            }else if(ch == '{'){
                st.push('}');
            }else if(st.empty() || ch != st.top()){
                return false;
            }else {
                st.pop();
            }
        }

        return st.empty();
    }
};
相关推荐
郝YH是人间理想6 分钟前
Pandas库DataFrame数据结构
数据结构·pandas
不想看见40421 分钟前
Hamming Distance位运算基础问题--力扣101算法题解笔记
算法
像污秽一样30 分钟前
算法与设计与分析-习题4.1
算法·链表·排序算法
lhc2009062543 分钟前
【作业】 贪心算法
算法·贪心算法
天若有情6731 小时前
循环条件隐藏陷阱:我发现了「同循环双条件竞态问题」
c++·学习·算法·编程范式·while循环··竞态
j_xxx404_1 小时前
C++算法:前缀和与哈希表实战
数据结构·算法·leetcode
我能坚持多久1 小时前
【初阶数据结构07】——栈与队列的代码实现与解析
数据结构
We་ct1 小时前
LeetCode 22. 括号生成:DFS回溯解法详解
前端·数据结构·算法·leetcode·typescript·深度优先·回溯
mit6.8242 小时前
tabbi风波|开源协议
算法
是梦终空1162 小时前
C++中的职责链模式变体
开发语言·c++·算法