有效的括号-力扣

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

  • 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以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();
    }
};
相关推荐
励志成为大佬的小杨10 分钟前
时间序列基础
人工智能·算法
ling__wx14 分钟前
go部分语法记录
数据结构
黑听人19 分钟前
【力扣 简单 C】83. 删除排序链表中的重复元素
c语言·开发语言·数据结构·算法·leetcode
微凉的衣柜34 分钟前
机器人导航中的高程图 vs 高度筛选障碍物点云投影 —— 如何高效处理避障问题?
算法·机器人
Shaun_青璇1 小时前
Cpp 知识3
开发语言·c++·算法
小鸡脚来咯1 小时前
ThreadLocal实现原理
java·开发语言·算法
编程绿豆侠1 小时前
力扣HOT100之技巧:75. 颜色分类
算法·leetcode·排序算法
程序员Xu1 小时前
大厂机试题解法笔记大纲+按知识点分类+算法编码训练
笔记·算法
DarkChunk2 小时前
[BUG]Cursor C++扩展不支持
算法
Lenyiin2 小时前
第 87 场周赛:比较含退格的字符串、数组中的最长山脉、一手顺子、访问所有节点的最短路径
java·c++·python·leetcode·周赛·lenyiin