📑 题目:20. 有效的括号

🚀 本题 LeetCode 传送门

题目大意

括号匹配问题。

解题思路

遇到左括号就进栈push,遇到右括号并且栈顶为与之对应的左括号,就把栈顶元素出栈。最后看栈里面还有没有其他元素,如果为空,即匹配。

需要注意,空字符串是满足括号匹配的,即输出 true。

代码

  1. package leetcode
  2. func isValid(s string) bool {
  3. // 空字符串直接返回 true
  4. if len(s) == 0 {
  5. return true
  6. }
  7. stack := make([]rune, 0)
  8. for _, v := range s {
  9. if (v == '[') || (v == '(') || (v == '{') {
  10. stack = append(stack, v)
  11. } else if ((v == ']') && len(stack) > 0 && stack[len(stack)-1] == '[') ||
  12. ((v == ')') && len(stack) > 0 && stack[len(stack)-1] == '(') ||
  13. ((v == '}') && len(stack) > 0 && stack[len(stack)-1] == '{') {
  14. stack = stack[:len(stack)-1]
  15. } else {
  16. return false
  17. }
  18. }
  19. return len(stack) == 0
  20. }