当前位置: 首页 > article >正文

【可视化教程】密码验证(栈)【算法竞赛】

密码验证(栈)算法竞赛

问题描述

在一个幻想的王国中,勇敢的冒险者坤坤听说一个传说:在遗忘之地有种神奇的魔法库,需要通过特殊的符号序列才能打开。坤坤是一个勇敢的冒险家,她在一次探险中找到了这些神秘的魔法库,并发现了打开魔法库的密码,密码的规则:

  1. 空符号序列是有效的;
  2. 如果 A A A B B B 是有效的,那么 A B AB AB 也是有效的;
  3. 如果 A A A 是有效的,那么 ( A ) (A) (A) [ A ] [A] [A] 也是有效的。

现在,坤坤手上有一个符号序列,她想知道这些符号序列是否有效,也就是说,她是否可以用这些符号序列打开魔法库。你能帮助她吗?

输入格式

输入一个只包含字符 ( , ) , [ , ] , { 和 } ( , ) , [ , ] , \{ 和 \} (,),[,],{} 的字符串,表示一个符号序列,长度不超过 1 0 5 10^5 105

输出格式

输出一行,如果相应的符号序列是有效的,输出 “Y”,否则输出 “N”。

样例输入 1

([])

样例输出 1

Y

样例输入 2

([(])

样例输出 2

N

题解

#include <iostream>
#include <stack>
#include <string>

using namespace std;

bool isValid(string s) {
    stack<char> st;
    for (char c : s) {
        if (c == '(' || c == '[' || c == '{') {
            st.push(c);
        } else {
            if (st.empty()) return false;
            char top = st.top();
            if ((c == ')' && top != '(') || 
                (c == ']' && top != '[') || 
                (c == '}' && top != '{')) {
                return false;
            }
            st.pop();
        }
    }
    return st.empty();
}

int main() {
    string s;
    cin >> s;
    cout << (isValid(s) ? "Y" : "N") << endl;
    return 0;
}

可视化网页链接
网页


http://www.kler.cn/a/614770.html

相关文章:

  • 业务流程先导及流程图回顾
  • hugo+github pages 部署实验室网站
  • 用 pytorch 从零开始创建大语言模型(三):编码注意力机制
  • Ubuntu 22.04 安装向日葵远程控制
  • linux系统中fstab 各字段详细说明
  • 【初阶数据结构】线性表之双链表
  • API 请求需要证书认证? 如何在 Postman 中正确配置和使用?
  • ESP-01模块连接手机热点问题及解决方法
  • 【蓝桥杯14天冲刺课题单】Day 1
  • 跟着StatQuest学知识08-RNN与LSTM
  • prometheus+grafana监控虚拟机实操
  • Kinova Gen3:重新定义手术机器人的精度革命
  • 计算机底层基石:原码、反码、补码、移码深度剖析
  • python基础学习二(列表及字典的使用)
  • 解决MySQL GTID模式下的“CREATE TABLE ... SELECT“报错:完整指南与最佳实践
  • 红宝书第二十一讲:详解JavaScript的模块化(CommonJS与ES Modules)
  • vue3+bpmn.js基本使用
  • 使用msmtp和mutt在CentOS上发送指定目录下的所有文件作为邮件附件
  • Go 语言规范学习(4)
  • IvorySQL:兼容Oracle数据库的开源PostgreSQL