华为机试题 :有效的括号

题目描述

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

有效字符串需满足:

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

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

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

输入描述

输入一行字符串 s。

输出描述

如果字符串有效,输出 true,否则输出 false。

示例 1

输入

text

复制代码
()[]{}

输出

text

复制代码
true

示例 2

输入

text

复制代码
(]

输出

text

复制代码
false

示例 3

输入

text

复制代码
([)]

输出

text

复制代码
false

C++ 解法

cpp

复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;

    stack<char> st;
    unordered_map<char, char> mp = {
        {')', '('},
        {']', '['},
        {'}', '{'}
    };

    for (char c : s) {
        if (c == '(' || c == '[' || c == '{') {
            st.push(c);
        } else {
            if (st.empty()) {
                cout << "false" << endl;
                return 0;
            }

            if (st.top() != mp[c]) {
                cout << "false" << endl;
                return 0;
            }

            st.pop();
        }
    }

    cout << (st.empty() ? "true" : "false") << endl;
    return 0;
}
相关推荐
坤坤子吖1 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
A加ITIL教练长河achotsao1 小时前
ITIL Master 战略领导者课后系列分享:AI编程正在重新划分研发与运维的边界
算法
hahaha60161 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
李洱1 小时前
LangChain 和 LangGraph 的区别:核心原理与使用场景
算法
夏幻灵1 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
神仙别闹1 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
王老师青少年编程2 小时前
2026年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
C++ 老炮儿的技术栈2 小时前
static的作用
c语言·c++·人工智能·单片机·c
岁月蹉跎的一杯酒2 小时前
CCM-可调颜色校正与噪声权衡
图像处理·算法·isp