数据结构学习之顺序栈应用的案例(有效的括号)

  • 实例要求:

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

  • 有效字符串需满足的条件:

  • 1、左括号必须用相同类型的右括号闭合;

  • 2、左括号必须以正确的顺序闭合

  • 3、每个右括号都有一个对应的相同类型的左括号;

  • 相关案例:
    在这里插入图片描述

  • 实例分析:

  • 1、利用strlen函数求出该字符串长度并且定义一个顺序栈(本代码将使用一个字符型数组和整形变量替代);

  • 2、for循环遍历字符串,当遇到’(‘,或’[‘,或’{',入栈

  • 3、当遍历到’)‘,或’]‘,或’}'且顺序栈为NULL,则本次有效的括号匹配false

  • 4、当遍历到’)‘,或’]‘,或’}‘且顺序栈为非NULL出栈顺序栈中的元素,并匹配’)‘,或’]‘,或’}',匹配成功返回true,失败则返回false

  • 5、当遍历好字符串后,若顺序栈为非NULL,则有效括号匹配失败,匹配成功返回true,失败则返回false

  • 示例代码:

	bool isValid(char* s) {int len = strlen(s);char a[len];    //定义顺序栈int top = 0;    //定义栈顶指针char b;//遍历字符串for(int i = 0; i < len; i++){if(s[i] == '(' || s[i] == '[' || s[i] == '{'){a[top] = s[i];  //入栈top++;}else{if(top == 0){return false;  }top--;b = a[top]; //出栈if(s[i] == ')' && b != '('){return false;}if(s[i] == ']' && b != '['){return false;}if(s[i] == '}' && b != '{'){return false;}}}if(top != 0){return false;}return true;}
  • 运行结果:
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/345683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++力扣题目98--验证二叉搜索树

给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff1a; 输入…

AI Table应用程序接口表的格式说明和作用

AI Table 首先全拼不是AI人工智能表&#xff0c;而是Application Interface Table应用程序接口表。此表按照AUTOSAR的格式规范去定义&#xff0c;并且使用此Excel 表格生成相应的应用软件组件Arxml文件。下面就让我们按照AUTOSAR_EXP_AIUserGuide.pdf文档官方解释描述文件去看看…

Python--装饰器

在 Python 中&#xff0c;装饰器是一种特殊类型的函数&#xff0c;它们用于修改或增强其他函数或方法的行为。装饰器本质上是一个函数&#xff0c;它接受一个函数作为参数&#xff0c;并返回一个新的函数。使用装饰器可以在不修改原函数代码的前提下&#xff0c;给函数添加新的…

数据结构实战:变位词侦测

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;逐个比较法1、编写源程序2、代码解释说明&#xff08;1&#xff09;函数逻辑解释&#xff08;2&#xff09;主程序部分 3、运行程序&#xff0c;查看结果4、计算时间复杂度 &#xff08;二&#xff09;排序比较法1…

《TrollStore巨魔商店》TrollStore2安装使用教程支持IOS14.0-16.6.1

TrollStore(巨魔商店) 简单的说就相当于一个永久的免费证书&#xff0c;它可以给你的iPhone和iPad安装任何你想要安装的App软件&#xff0c;而且不需要越狱,不用担心证书签名过期的问题&#xff0c;不需要个人签名和企业签名。 支持的版本&#xff1a; TrollStore安装和使用教…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip,docker管理工具lazydocker、scope

influxdb influxdb: 有收费版本、有开源版本 influxdb 安装、启动(docker) docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口#docker exec -it influxdb-dev bashinfluxdb 自带web界面 从后面的…

RK3568平台 温度传感器芯片SD5075

一.SD5075芯片简介 SD5075 是一款高准确度温度传感器芯片内含高精度测温 ADC&#xff0c;在-40C ~100C 范围内典型误差小于0.5C&#xff0c;在-55C~125C 范围内典型误差小于士1.0C。通过两线 IC/SMBus接口可以很方便与其他设备建立通信。设置 A2~A0 的地址线&#xff0c;可支持…

【Maven】005-基于 IDEA 进行 Maven 依赖管理

【Maven】005-基于 IDEA 进行 Maven 依赖管理 文章目录 【Maven】005-基于 IDEA 进行 Maven 依赖管理一、Maven 依赖管理二、GAVP 再说明三、Maven 工程依赖管理配置1、依赖配置2、版本统一声明和使用3、依赖范围说明4、Maven工程依赖下载失败错误解决&#xff08;重点&#xf…

水果音乐编曲软件 FL Studio v21.2.2.3914 中文免费版(附中文设置教程)

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

LLM之长度外推(二)| Self-Extend:无需微调的自扩展大模型上下文窗口

论文链接&#xff1a;https://simg.baai.ac.cn/paperfile/a34ae7f4-f0ce-4f8f-b8f2-e8e4d84bbee5.pdf 目前大模型基本都采用transformer结构&#xff0c;而transformer中attention机制的计算复杂度与序列长度呈平方关系&#xff0c;因此大模型在训练时候通常会设置固定的上下文…

上门回收小程序开发,让回收更加简单

资源回收一直是当下深受大众关注的话题&#xff0c;如何做到资源不浪费&#xff0c;成为了大众要考虑的问题。在人们环保意识的加深下&#xff0c;回收行业也是获得了大众的关注&#xff0c;逐渐形成了一个新的商业模式。 随着互联网技术的发展&#xff0c;回收行业也更加方便…

重学Java 3 变量 数据类型转换 运算符

路上难免会有许多挫折&#xff0c;你要学会应对&#xff0c;要坚不可摧 ——24.1.12 一、常量 1.概述&#xff1a;在代码的运行过程中&#xff0c;值都不会发生改变的数据 2.分类&#xff1a; 整数常量&#xff1a;所有整数&#xff0c;包含正负 小数常量&#xff1a;所有带小数…