每日一题 --- 有效的括号[力扣][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
}
相关推荐
呆呆的猫5 分钟前
【LeetCode】227、基本计算器 II
算法·leetcode·职场和发展
Tisfy7 分钟前
LeetCode 1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解
算法·leetcode·优先队列·贪心·
州周11 分钟前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd12 分钟前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
kaixin_learn_qt_ing24 分钟前
Linux export命令
linux
余额不足1213827 分钟前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole31 分钟前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒34 分钟前
Linux(二)_清理空间
linux·运维·服务器
云川之下44 分钟前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare
热心市民运维小孙1 小时前
Ubuntu重命名默认账户
linux·ubuntu·excel