力扣 20. 有效的括号

74 阅读1分钟

20. 有效的括号

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

有效字符串需满足:

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

思路

利用栈后进先出的策略来解题,判断这个字符和上一个字符是否构成一对,如果是就都出栈, 最后判断栈长是否为0

Code

func isValid(s string) bool {
	stack := []int32{}
	mp := map[int32]int32{
		'{': '}',
		'(': ')',
		'[': ']',
	}
	for _, v := range s {
		if v == '{' || v == '[' || v == '(' {
			stack = append(stack, v)
		} else {
			if len(stack) == 0 {
				return false
			}
			k := stack[len(stack)-1]
			if mp[k] == v {
				stack = stack[:len(stack)-1]
			} else {
				return false
			}
		}
	}
	if len(stack) == 0 {
		return true
	}
	return false
}