Valid Parentheses栈和队列--力扣101算法题解笔记

11.3Valid Parentheses栈和队列

题目描述

给定一个只由左右原括号、花括号和方括号组成的字符串,求这个字符串是否合法。合法的定义是每一个类型的左括号都有一个右括号与之一一对应。且括号内的字符串也满足此要求。

输入输出样例

Input :"{ \[\] }()"

Output:true

题解

括号匹配是典型的使用栈来解决的问题。我们从左往右遍历,每当遇到左括号便放入栈内,遇到右括号则判断其和栈顶的括号是否是统一类型,是则从栈内取出左括号,否则说明字符串不合法。

cpp 复制代码
#include <iostream>
#include <stack>
using namespace std;

bool isValid(string s) {
    stack<char> parsed;
    for (int i = 0; i < s.length(); ++i) {
        if (s[i] == '{' || s[i] == '[' || s[i] == '(') {
            parsed.push(s[i]);
        }
        else {
            if (parsed.empty()) {
                return false;
            }
            char c = parsed.top();
            if ((s[i] == '}' && c == '{') ||
                (s[i] == ']' && c == '[') ||
                (s[i] == ')' && c == '(')) {
                parsed.pop();
            }
            else {
                return false;
            }
        }
    }
    return parsed.empty();
}

int main() {
        string s = "{[]}()";

        if (isValid(s)) {
                cout << "true" << endl;
        }
        else {
                cout << "false" << endl;
        }

        return 0;
}
相关推荐
chase_my_dream几秒前
FAST-LIO src/IMU_Processing.hpp 完整详细讲解
c++·状态模式·slam
旖-旎15 分钟前
《LeetCode 1137 第N个泰波那契数 和 LeetCode 三步问题》
c++·算法·leetcode·动态规划
c++之路16 分钟前
C++跨平台(九):跨平台字节序统一处理
开发语言·arm开发·c++
Evand J26 分钟前
【MATLAB例程|车联网6】考虑调头车流扰动与网联车辆实时感知信息的干线多交叉口 FAC-CV 全感应协调控制仿真与性能对比分析
开发语言·matlab·仿真·代码·车联网·智慧交通·车辆
云絮.27 分钟前
数据库事务
java·开发语言·数据库
派葛穆36 分钟前
Python-pip切换镜像源
开发语言·python·pip
Full Stack Developme43 分钟前
Java 漏斗算法 及应用场景
java·开发语言·算法
阿里嘎多学长1 小时前
2026-07-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
xxie1237941 小时前
Python 闭包:函数嵌套的 “状态捕获” 机制
开发语言·python
ysa0510301 小时前
【并查集】判环,深搜
数据结构·c++·算法·深度优先