力扣5-有效的括号

embedded/2025/1/19 2:45:35/

一.题目

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

有效字符串需满足:

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

示例 1:

输入:s = "()"

输出:true

示例 2:

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

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

二.代码

bool isValid(char* s) 
{  char a[100000]="\0";if((s[0]==')')||(s[0]=='}')||(s[0]==']')){return false;}int i,j=0;for(i=0;i<strlen(s);i++){if((s[i]=='(')||(s[i]=='{')||(s[i]=='[')){a[j]=s[i];j++;}if((s[i]==')')||(s[i]=='}')||(s[i]==']')){if(j>0){j--;}else{return false;}switch(s[i]){case ')':{if(a[j]=='('){a[j]='\0';}else{return false;}break;}case '}':{if(a[j]=='{'){a[j]='\0';}else{return false;}break;}case ']':{if(a[j]=='['){a[j]='\0';}else{return false;}break;}}}continue;}if(a[0]!='\0'){return false;}else{return true;}
}

三.补全代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>bool isValid(char* s)
{int len = strlen(s);char* a = (char*)malloc(len + 1);if (a == NULL) {// 处理内存分配失败的情况perror("malloc failed");exit(EXIT_FAILURE);}a[0] = '\0';if ((s[0] == ')') || (s[0] == '}') || (s[0] == ']')){free(a);return false;}int i, j = 0;for (i = 0; i < len; i++){if ((s[i] == '(') || (s[i] == '{') || (s[i] == '[')){j++;a[j - 1] = s[i];}if ((s[i] == ')') || (s[i] == '}') || (s[i] == ']')){if (j > 0){j--;switch (s[i]){case ')':if (a[j] == '('){a[j] = '\0';}else{free(a);return false;}break;case '}':if (a[j] == '{'){a[j] = '\0';}else{free(a);return false;}break;case ']':if (a[j] == '['){a[j] = '\0';}else{free(a);return false;}break;}}else{free(a);return false;}}}bool valid = (a[0] == '\0');free(a);return valid;
}int main() {char* str = "()[]{}";if (isValid(str)) {printf("Valid\n");}else {printf("Invalid\n");}return 0;
}


http://www.ppmy.cn/embedded/155114.html

相关文章

如何在服务器同一个端口下根据路径区分不同的应用

通常我们使用域名直接访问网站时&#xff0c;使用的是80或者443端口。但一个主站下面可能有好几个子网站&#xff0c;我们如何通过路径来挂载子网站呢&#xff1f; nginx.conf配置 使用nginx代理能够实现根据不同的路径&#xff0c;访问同一端口下的子网站。 root配置网站的默…

智能化植物病害检测:使用深度学习与图像识别技术的应用

植物病害一直是农业生产中亟待解决的问题&#xff0c;它不仅会影响作物的产量和质量&#xff0c;还可能威胁到生态环境的稳定。随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;尤其是深度学习和图像识别技术的应用&#xff0c;智能化植物病害检测已经成为一…

hive迁移后修复分区慢,怎么办?

我有1个30TB的分区表&#xff0c;客户给的带宽只有600MB&#xff0c;按照150%的耗时来算&#xff0c;大概要迁移17小时。 使用hive自带的修复分区命令&#xff08;一般修复分区比迁移时间长一点&#xff09;&#xff0c;可能要花24小时。于是打算用前面黄大佬的牛B方案。 msck …

Python爬虫:获取详情接口和关键词接口

在电商领域&#xff0c;获取商品详情和关键词推荐对于市场分析和用户体验优化至关重要。Python爬虫技术可以自动化地从网页中提取这些信息。本文将详细介绍如何使用Python爬虫获取详情接口和关键词接口的数据&#xff0c;包括环境搭建、基本爬虫编写、数据解析、高级爬虫技术以…

【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-dio版本(31 /100)

动图更精彩 dio & http 在Flutter中&#xff0c;dio和http是两个常用的HTTP请求库&#xff0c;它们各有优缺点。以下是对这两个库的详细对比&#xff1a; 功能特性 http&#xff1a; 功能&#xff1a;提供了基本的HTTP请求和响应功能&#xff0c;如GET、POST、PUT、DELE…

cmake foreach 条件判断

格式 foreach(<loop_var> <items>)<commands> endforeach()其中<items>是由空格或空白分隔的项目列表。foreach和匹配的endforeach之间的所有命令都被记录下来而不被调用。一旦计算完endforeach&#xff0c;将为<items>中的每个项目调用一次记录…

第三章、python中的对象、变量、标识符、作用域、引用(调用)及地址的概念(3.1-3.2)------内存地址、创建对象、对象的类型及对象的划分问题

第三章、python中的对象、变量、标识符、作用域、引用(调用)及地址的概念 本章讲述编程中对象、变量、地址的基本概念及其之间的关系,可迭代对象、可变对象、不可变对象的特点。

【ComfyUI专栏】Git Clone 下载自定义节点的代理设置

我们实际在使用ComfyUI 下载节点的时候会碰到下载缓慢的问题,这个问题如何解决呢?有没有比较好的办法解决下载和复制缓慢的问题呢?这个就涉及到我们使用代理的方式进行节点下载的方式了。首先确定我们当前的代理服务器的设置,也就是IP地址和端口问题。 开启Cmd命令,执行如…