有效的括号-力扣

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

  • 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以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();
    }
};
相关推荐
1白天的黑夜119 小时前
栈-844.比较含退格的字符串-力扣(LeetCode)
c++·leetcode·
重生之我是Java开发战士19 小时前
【数据结构】Java集合框架:List与ArrayList
java·数据结构·list
爱干饭的boy19 小时前
手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
java·数据结构·后端·算法·spring
二哈不在线19 小时前
代码随想录二刷之“动态规划”~GO
算法·golang·动态规划
cellurw19 小时前
俄罗斯方块终端游戏实现 —— C语言系统编程与终端控制
c语言·算法
躲在云朵里`19 小时前
Redis深度解析:核心数据结构、线程模型与高频面试题
数据结构·数据库·redis
诸葛务农20 小时前
光电对抗:多模/复合制导中算法和软件平台
算法
Swift社区21 小时前
LeetCode 378 - 有序矩阵中第 K 小的元素
算法·leetcode·矩阵
墨染点香21 小时前
LeetCode 刷题【73. 矩阵置零】
算法·leetcode·矩阵