每日一题 --- 有效的括号[力扣][Go]

有效的括号

题目:20. 有效的括号

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

有效字符串需满足:

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

示例 1:

复制代码
输入:s = "()"
输出:true

示例 2:

复制代码
输入:s = "()[]{}"
输出:true

示例 3:

复制代码
输入:s = "(]"
输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

方法:

括号匹配可以使用栈来完成。代码如下

go 复制代码
func isValid(s string) bool {
	length := len(s)
	stack := make([]rune, length)
	stackidx := -1
	for _, r := range s {
		if r == '{' || r == '[' || r == '(' {
			stackidx++
			stack[stackidx] = r
		} else {
			if stackidx == -1 {
				return false
			}
			switch r {
			case '}':
				if stack[stackidx] != '{' {
					return false
				}
			case ')':
				if stack[stackidx] != '(' {
					return false
				}
			case ']':
				if stack[stackidx] != '[' {
					return false
				}
			}
			stackidx--
		}
	}
	if stackidx != -1 {
		return false
	}
	return true
}
相关推荐
by__csdn43 分钟前
nvm命令使用,nvm国内镜像,nvm命令for Linux/Mac
linux·运维·macos
su3171 小时前
rap2部署
linux·运维·服务器
夏鹏今天学习了吗1 小时前
【LeetCode热题100(64/100)】搜索旋转排序数组
算法·leetcode·职场和发展
wheeldown1 小时前
【Linux】Linux 地址空间 + 页表映射的概念解析
java·linux·jvm
alphaTao1 小时前
LeetCode 每日一题 2025/11/3-2025/11/9
windows·leetcode
陌路201 小时前
操作系统(11)进程描述与控制--5种IO状态(1)
linux·ubuntu
skywalk81631 小时前
阿里云服务器FreeBSD新系统从登录、配置到升级:从14.1升级到FreeBSD 14.3 Release
linux·服务器·阿里云·freebsd
草莓熊Lotso2 小时前
Linux 基础开发工具入门:软件包管理器的全方位实操指南
linux·运维·服务器·c++·人工智能·网络协议·rpc
喜欢吃燃面2 小时前
Linux:make自动化和实战演练
linux·学习
顾安r3 小时前
11.8 脚本网页 推箱子
linux·前端·javascript·flask