C语言 ——— oj题:有效的括号

news2024/11/27 4:19:44

目录

题目要求

代码实现 


题目要求

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false


代码实现

代码演示:

char pairs(char ch)
{
	if (ch == ')')
		return '(';

	if (ch == ']')
		return '[';

	if (ch == '}')
		return '{';

	return 0;
}

bool isValid(char* s)
{
	int len = strlen(s);
	int arr[len] = { 0 };
	int top = 0;

	// 排除字符串长度为奇数的情况
	if (len % 2 == 1)
		return false;

	for (int i = 0; i < len; i++)
	{
		if (pairs(s[i]) != 0)
		{
			if (top == 0 || arr[top-1] != pairs(s[i]))
				return false;
			else
				top--;
		}
		else
		{
			arr[top] = s[i];
			top++;
		}
	}

	return top == 0;
}

代码解析:

先排除字符串长度为奇数的情况,因为长度为奇数的话,就至少会有一个括号无效
再创建一个 pairs 函数,用来返回对应的括号,和 arr 数组的最后一个元素作比较,相等就消除最后一个元素,利用 top--,不等就说明不是有效括号,直接返回 false
需要注意的是,可以一开始就是右括号,所以在判断的时候要判断 top 是否为 0

代码验证:

为有效括号时:

为无效括号时:

算法的时间和空间复杂度:

for 循环执行了 N 次,每次内部是常数次,且额外创建了长度为 len 的 arr 数组,得出

时间复杂度:O(N)

空间复杂度:O(N) 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【靶点Talk】为什么联合用药喜欢用VEGF+VEGFR?

血管生成对肿瘤发生、发展的重要影响的发现&#xff0c;使肿管生成变为肿瘤研究的热点之一。今天给大家带来VEGF、VEGFR相关介绍&#xff0c;更多靶点科普视频请关注义翘神州B站和知乎官方账号。 1、VEGFR的“简历” VEGFR包括VEGFR-1、VEGFR-2和VEGFR-3。VEGFR-2可与多种VEGF…

leetcode hot100_part03_滑动窗口

滑动窗口是有一个基本的模版的&#xff0c;不要自己想当然哦~ 滑动窗口算法思想&#xff08;附经典例题&#xff09;_滑动窗口的思想-CSDN博客 滑动窗口也叫同向双指针&#xff1b;可以先看一下灵山视频&#xff1a;滑动窗口【基础算法精讲 03】_哔哩哔哩_bilibili 3.无重复字…

springboot如何自动生成mybatis映射文件、dao、pojo层文件?

背景&#xff1a;以前一直是直接cv一个项目中现成的xml文件&#xff0c;然后再去自己配置mapper等数据。自己准备做一个单独的例子试一下。 步骤1&#xff1a;在pom.xml文件中插入mybatis-generator插件&#xff0c;这里选的版本是1.3.2&#xff0c;然后指定的generator文件是在…

ChatGPT 4o with Canvas — 新特性详解

# ChatGPT 4o with Canvas — 新特性详解 最近猫哥也感受到 Canvas 的强大&#xff0c;顺手开了个会员体验了一天&#xff0c;今天给大家简单分享一下&#xff0c;有想体验的伙伴可以文末名片私信我哈&#xff01; 关键词&#xff1a; #ChatGPT4o #Canvas新特性 #AI写作工具 …

[论文笔记]DAPR: A Benchmark on Document-Aware Passage Retrieval

引言 今天带来论文DAPR: A Benchmark on Document-Aware Passage Retrieval的笔记。 本文提出了一个基准&#xff1a;文档感知段落检索(Document-Aware Passage Retrieval,DAPR)以及介绍了一些上下文段落表示的方法。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c…

Best HTTP V3

Best HTTP是Unity的权威网络解决方案,专为需要多功能性和强大功能的开发人员而设计。它与Unity 2021.1及更高版本无缝兼容,提供无与伦比的跨平台支持,包括桌面、移动设备、UWP和Web浏览器。凭借其高级功能集,它超越了基本的HTTP请求,支持HTTPS、HTTP/2,并通过传统的回调、…

2024年10月11日历史上的今天大事件早读

1038年10月11日李元昊称帝&#xff0c;国号大夏&#xff0c;西夏建立 1086年10月11日北宋政治家、史学家司马光逝世 1889年10月11日英国物理学家焦耳逝世 1900年10月11日李鸿章开始与八国联军的艰难谈判 1937年10月11日淞沪战线大场之战爆发 1944年10月11日日军包围桂林 …

The 2024 ICPC Kunming Invitational Contest K. Permutation(交互 期望)

在知乎内查看 题目 思路来源 题解 首先特判n1的情况&#xff0c;其实也不用问 分治&#xff0c;假设当前解决到[l,r]&#xff0c;要递归的vector是x&#xff0c; 维护两个vector L、R&#xff0c;代表下一步要在[l,mid]和[mid1,r]分治的vector 每次将x random_shuffle后&a…

网络安全 IP地址防泄漏指南

IP地址作为每个上网人的“门牌标识号”&#xff0c;如果产生泄露&#xff0c;可能会导致个人行踪曝光、数据被窃取甚至遭受网络攻击&#xff0c;要防止IP地址不被窃取&#xff0c;我们可以尝试以下方法&#xff1a; 利用专用网络加强隐私保护 通过加密在公共网络上创建一条安全…

力扣 前缀和

找子数组的个数了解前缀和的基础。 前缀和大致理解为到达某个位置&#xff0c;前面几个数的总和&#xff0c;即s[i1]s[i]a[i1]&#xff0c;可以通过一次循环获得。然后几个前缀和作差&#xff0c;即可得到某个位置到某个位置的和&#xff0c;根据map的键值对进行更新次数。 题…

博客项目自动化测试(一)

1. 确认博客系统的环境搭建 http://49.235.129.183:8080/java109_blog_system/blog_list.html&#xff0c;即可访问我的小项目&#xff1b; 2. 确定测试用例 测试用例如下所示&#xff1a; 3. 关于登录的测试用例 3.1 初始化和退出浏览器 代码如下&#xff1a; package Blo…

查缺补漏----二进制指数退避算法的流程

具体为以下几步&#xff1a; 例题&#xff1a; ① 争用时间片2t51.2us ② kmin{重传次数&#xff0c;10}&#xff0c;题目说4次冲突&#xff0c;所以k为4&#xff0c;对应参数集合为&#xff1a; {0&#xff0c;1&#xff0c;2&#xff0c;......} ③ 等待的最长时间&#xff1…

PHP学习记录-编辑器推荐和本地环境的安装

文章目录 一&#xff0c;编辑器首推VSCode1&#xff0c;vscode2&#xff0c;PHPStorm 二&#xff0c;PHP环境搭建1&#xff0c;下载安装2&#xff0c;使用phpstudy创建站点3&#xff0c;答疑解惑 一&#xff0c;编辑器首推VSCode 1&#xff0c;vscode 对于PHP新手来说&#x…

育菁实验室用桌面级CNC加工中心

桌面级CNC加工中心的发展可以追溯到数控技术的兴起。随着数控机床技术的不断进步&#xff0c;小型化、桌面化的加工中心逐渐成为可能。特别是近年来&#xff0c;随着智能制造、工业4.0等概念的提出&#xff0c;桌面级加工中心因其灵活、高效、占地面积小等特点&#xff0c;受到…

【GT240X】【3】Wmware17和Centos 8 安装

文章目录 一、说明二、安装WMware2.1 下载WMware2.2 安装2.3 虚拟机的逻辑结构 三、安装Centos3.1 获取最新版本Centos3.2 创建虚拟机 四、问题和简答4.1 centos被淘汰了吗&#xff1f;4.2 centos里面中文显示成小方块的解决方法4.3 汉语-英语输入切换4.4 全屏和半屏切换 五、练…

【Ubuntu】在Ubuntu上配置Java环境

【Ubuntu】在Ubuntu上配置Java环境 壹、前言 Java是运用得非常广泛的编程语言&#xff0c;在使用Linux时难免会碰到需要用到JDK的情况&#xff0c;故本文介绍如何在Ubuntu上配置Java21环境。 贰、下载 Java的下载渠道很多&#xff0c;有甲骨文公司的“官方”JDK&#xff0c…

2024年第四届机器人、自动化和人工智能国际会议(RAAI 2024)即将召开!

学术会议查询-学术会议交流服务平台-爱科会易 (uconf.com)https://www.uconf.com/ 第四届机器人、自动化和人工智能国际会议&#xff08;RAAI 2024&#xff09;将于 2024 年 12 月 19-21 日在新加坡举行。会议旨在为研究人员、从业人员和行业专家提供一个平台&#xff0c;分享他…

ubuntu安装好后网络里面没有有线网卡连接 已解决

装好ubuntu18.04.6后&#xff0c;发现网络配置里面没有有线网卡连接&#xff0c;怀疑是有线网卡驱动没有安装或者是安装好的有线网卡驱动跟硬件不匹配。网络上搜索了半天&#xff0c;最终是这篇文章解决了我的问题&#xff1a;https://juejin.cn/post/7155368447243714574。简单…

【JAVA+flowable】工作流 实现抄送节点

由于flowable并没有 抄送节点 这一节点类型 只能在审核中添加抄送人, 但客户有此需求。所以定制实现此需求 增加一种节点任务类型: 抄送任务 由于flowable并没有 抄送节点 这一节点类型 所以用自带的 空白任务 改造成抄送 实现步骤 1.就是需要获取到 流程当前节点,下一个…

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测&#xff0c;特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…