每日一题 --- 有效的括号[力扣][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
}
相关推荐
jimy118 小时前
安卓里运行Linux
linux·运维·服务器
LYFlied19 小时前
【每日算法】LeetCode 153. 寻找旋转排序数组中的最小值
数据结构·算法·leetcode·面试·职场和发展
爱凤的小光19 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
源代码•宸19 小时前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
耗同学一米八20 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S20 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_8904430220 小时前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)21 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
smj2302_796826521 天前
解决leetcode第3782题交替删除操作后最后剩下的整数
python·算法·leetcode
老王熬夜敲代码1 天前
解决IP不够用的问题
linux·网络·笔记