每日一题 --- 有效的括号[力扣][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
}
相关推荐
持之以恒的天秤1 小时前
线程同步学习
linux·学习
qq_339282236 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
leoufung6 小时前
ECPF 简介
linux·网络·kernel
北上ing6 小时前
算法练习:19.JZ29 顺时针打印矩阵
算法·leetcode·矩阵
在肯德基吃麻辣烫7 小时前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
XiaoyaoCarter7 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
愚戏师8 小时前
Linux复习笔记(六)shell编程
linux·笔记·shell
大胆飞猪8 小时前
Linux操作系统--进程间通信(system V共享内存)
linux
LunarCod9 小时前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
betazhou9 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg