C/C++ 有效的括号判断

题目: 给定一个只包括 '(',')','{','}','[',']'的字符串s,判断字符串是否有效。
约束: 有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    每个右括号都有一个对应的相同类型的左括号。

示例 1:
    输入:s = "()"
    输出:true

示例 2:
    输入:s = "()[]{}"
    输出:true

示例 3:
    输入:s = "(]"
    输出:false
        
示例 4:
    输入:s = "{[]}"
    输出:true

解析: 遇到左括号则入栈,遇到对应得右括号则出栈。

演示源码:

// Len_IsValid.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <vector>
using namespace std;


bool isValid(string s) 
{
	vector<char> q;
	char last = ' ';
	for (int i = 0; i < s.size(); i++)
	{
		last = (q.size() > 0) ? (q[q.size() - 1]) : (' ');

		if (s[i] == ')' || s[i] == '}' || s[i] == ']')
		{
			if (s[i] == ')' && last == '(') q.pop_back();
			else if (s[i] == '}' && last == '{') q.pop_back();
			else if (s[i] == ']' && last == '[') q.pop_back();
			else return false;
		}
		else
		{
			q.push_back(s[i]);
		}
	}
	if (q.size() > 0) return false;

	return true;
}


void PrintStr(string s, bool bResult)
{
	// s
	printf("\ns = \"%s\"", s.c_str());

	// result
	printf("\nbResult = %s\n", (bResult != 0) ? ("true") : ("false"));
}

int main()
{
	string s = "()";
	bool bResult = isValid(s);
	PrintStr(s, bResult);

	s = "()[]{}";
	bResult = isValid(s);
	PrintStr(s, bResult);
	
	s = "(}";
	bResult = isValid(s);
	PrintStr(s, bResult);

	s = "{[]}";
	bResult = isValid(s);
	PrintStr(s, bResult);
}

执行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正交调制与解调原理

一、正交调制与解调原理 /***************************************正交调制*********************************************/ 图中信道中的信号为&#xff1a;s(t)sR​(t)cos(w0​t)−sI​(t)sin(w0​t)&#xff08;这就是正交调制后的信号&#xff09; 我们可以通过傅里叶变…

UE4 UMG 颜色字体和PS对应关系

与PS中对应的是Hex sRGB色号 但是PS中采用的16进制色号为6位 UE4中的为8位 UMG制作时默认dpi为96像素/英寸&#xff0c;psd默认dpi是72像素/英寸。 在GUI设计时将dpi设为96&#xff0c;或者将72dpi下字体的字号乘以0.75&#xff0c;都能还原效果图中的效果。

CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

CleanMyMac X您的 Mac。极速如新。点按一下&#xff0c;即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下&#xff0c;即可运行所有任务&#xff0c;让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…

【数据结构和算法】移动零

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针 2.2 方法二&#xff1a;两次遍历 2.3 方法三&#xff1a;一次遍历 三、…

三维成像激光雷达标定板可应用于各种领域

激光雷达技术是一种现代光学遥感技术&#xff0c;是传统雷达技术与现代激光技术相结合的产物&#xff0c;是以激光束作为信息载体&#xff0c;可以用振幅、相位、频率和偏振来搭载信息的雷达。 多线激光雷达则是通过多光束形成扫描平面&#xff0c;通过一维旋转机构实现四周的扫…

每日一博 - Cache Miss Attack

文章目录 概述解决思路缓存空值键并设置短期 TTL&#xff08;生存时间&#xff09;使用布隆过滤器 伪代码1. 缓存空值键并设置短期 TTLa. 缓存空值键b. 设置短期 TTL 2. 使用布隆过滤器a. 集成布隆过滤器b. 查询布隆过滤器 进一步优化系统性能的建议 概述 在缓存管理中&#x…

社交网络分析2(上):社交网络情感分析的方法、挑战与前沿技术

社交网络分析2&#xff08;上&#xff09;&#xff1a;社交网络情感分析的方法、挑战与前沿技术 写在最前面1. 情感分析的基本概念社交网络情感分析的挑战与应用 情感分析研究现状2. 根据分析的对象&#xff0c;情感分析可以划分为哪几种类型&#xff0c;简要地进行说明。词汇表…

vue的slot插槽详解

目录 一、基本用法 在上面的例子中&#xff0c;我们在子组件中定义了一个插槽&#xff0c;然后在父组件中使用标签&#xff0c;并在标签内部放置了一个 标签作为插槽的内容。当父组件被渲染时&#xff0c;插槽的内容将被替换为实际传入的内容。 二、具名插槽 在上面的例子…

jmeter,csv文件参数化+断言 实现一个接口的case

1、case 及其 测试数据 注意保存文件的编码格式 id,name,limit,status,address,start_time,assert_status,assert_message 100,小米100,1000,1,某某会展中心101,2023-8-20 14:20,200,add event success ,,,,,,10021,parameter error 100,小米102,1002,1,某某会展中心103,2023-…

react经验8:使用antd的checkbox实现全选与半选控制

预期实现的效果 列表项部分选中时&#xff0c;checkall处于半选状态&#xff0c;点击checkall要么全选&#xff0c;要么全不选。 实现步骤 列表项类型 declare type TableRow {key: Keytitle: stringisSelected?: boolean }示范数据 const [tabledata, setTabledata] u…

透明PP专用UV胶水粘接PP材料高效率的提升生产效率

使用透明PP专用UV胶水粘接PP材料是提高生产效率的方法。以下方法&#xff0c;可以助您在生产中实现高效的PP材料粘接&#xff1a; ​1.选用合适的透明PP专用UV胶水 选择经过专门设计用于透明PP的UV胶水。这种胶水具有透明性&#xff0c;能保证粘接后的清晰度和外观。 2.自动…

Google Gemini Pro:AI模型的新里程碑,开放API访问;Octo: 一个开源通用的机器人策略

&#x1f989; AI新闻 &#x1f680; Google Gemini Pro&#xff1a;AI模型的新里程碑&#xff0c;开放API访问 摘要&#xff1a;Google宣布推出了名为Gemini的AI模型&#xff0c;旨在使AI更加有用。Gemini分为Ultra、Pro和Nano三个版本&#xff0c;并已开始在产品中使用。Ge…

亚马逊云科技 re:Invent 大会 - S3 对象存储华丽升级

亚马逊云科技 re:Invent 大会 - S3 对象存储华丽升级 本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 文章目录 亚马逊云科技 re:Inv…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

电子信息、物联网专业大学生如何提高动手能力

作为一名电子类或物联网类专业学生&#xff0c;仅仅掌握专业基础理论知识是不够的&#xff0c;还需要增加实际动手能力和实践经验。那么&#xff0c;动手实践能力真的那么重要吗&#xff1f;我们应该怎么提高动手能力呢&#xff1f;本文就谈谈这些问题。 所谓动手能力&#xf…

网络镜像 -- 本地端口镜像

网络镜像 网络镜像技术允许复制和记录在计算机网络上传输的数据流量&#xff0c;可以将交换机中一个端口的流量复制到另一个端口。 网络镜像广泛用于抓包监控。 用一个场景来举例&#xff1a; 如图&#xff0c;PC1、2、3分别是三台主机&#xff0c;与Switch交换机对应端口…

Ubuntu Desktop 22.04 禁用自动更新

Ubuntu 的自动更新并不稳定&#xff0c;之前的一次推送更新了内核版本&#xff0c;稳定性影响比较大&#xff0c;禁用自动更新的方法如下&#xff1a; 1.在设置里禁用软件更新 2.关闭 unattended-upgrades 如果只禁用上面的更新&#xff0c;unattended-upgrades 还是会在后台…

基于web的资源共享平台的共享与开发论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本资源共享平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

leetcode 153. 寻找旋转排序数组中的最小值(优质解法)

代码&#xff1a; class Solution {public int findMin(int[] nums) {int left0,rightnums.length-1;int refernums[right];while (left<right){int midleft(right-left)/2;if(nums[mid]>refer){leftmid1;}else {rightmid;}}return nums[left];} }题解&#xff1a; 通过…

利用tf-idf对特征进行提取

TF-IDF是一种文本特征提取的方法&#xff0c;用于评估一个词在一组文档中的重要性。 一、代码 from sklearn.feature_extraction.text import TfidfVectorizer import numpy as npdef print_tfidf_words(documents):"""打印TF-IDF矩阵中每个文档中非零值对应…