方法一:栈

思路:借助栈先进后出的特性

  1. func isValid(s string) bool {
  2. stack := []byte{}
  3. hmap := map[byte]byte{
  4. ')': '(',
  5. ']': '[',
  6. '}': '{',
  7. }
  8. for i := 0; i < len(s); i++ {
  9. //如果是左括号就加入
  10. if s[i] == '(' || s[i] == '[' || s[i] == '{' {
  11. stack = append(stack, s[i])
  12. continue
  13. } else if len(stack) > 0 && hmap[s[i]] == stack[len(stack)-1] {
  14. //弹出栈顶
  15. stack = stack[:len(stack)-1]
  16. } else {
  17. //说明不匹配
  18. return false
  19. }
  20. }
  21. return len(stack) == 0
  22. }