LeetCode 20. 有效的括号

题目描述

20. 有效的括号

image-20230304210700720

思路分析

image-20250506225540934

image-20250507211449781

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func isValid(s string) bool {
	stack := make([]rune, 0)
	hashtable := map[rune]rune{
		')': '(',
		']': '[',
		'}': '{',
	}
	for _, c := range s {
		if c == '(' || c == '[' || c == '{' {
			stack = append(stack, c)
		} else {
			if len(stack) > 0 && stack[len(stack)-1] == hashtable[c] {
				stack = stack[:len(stack)-1]
			} else {
				return false
			}
		}
	}
	return len(stack) == 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func isValid(s string) bool {
	stack := make([]rune, 0)
	hashtable := map[rune]rune{
		')': '(',
		']': '[',
		'}': '{',
	}
	for _, c := range s {
		if c == '(' || c == '[' || c == '{' {
			stack = append(stack, c)
		} else {
			if len(stack) == 0 || stack[len(stack)-1] != hashtable[c] {
				return false
			} else {
				stack = stack[:len(stack)-1]
			}
		}
	}
	return len(stack) == 0
}
  • 时间复杂度:O (n),其中 n 是字符串 s 的长度。
  • 空间复杂度:O (n),在最坏情况下,栈中可能存储所有的左括号。

➡️ 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/07220011
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!