go解题答案

  • 时间复杂度O(1)
  • 思路概括:栈
  • 思路核心:
    1、因为是对称的,所以用栈的结构判断,匹配上将栈元素删除,
    2、最后栈空为合法
    func isValid( s string ) bool {
      stack:=[]string{}
      for _,c:=range s {
          k:=string(c)
          if len(stack)==0{
              //至少保证栈里面有东西
              stack=append(stack,k)
              continue
          }
          if k=="(" || k=="{" || k=="["{
             stack=append(stack,k)
              continue
          }
          index:=len(stack)-1
          // 匹配抵消
          if k==")" && stack[index]=="(" {
              stack = stack[:index]
          } else if k=="}" && stack[index]=="{" {
              stack = stack[:index]
          } else if k=="]" && stack[index]=="[" {
              stack = stack[:index]
          } else {
          // 不匹配添加
              stack=append(stack,k)
          }
      }
      // 栈空就是对称
      if len(stack)==0 {
          return true
      }
      return false
    }

    如果有帮助请点个赞哦, 更多文章请看我的博客

    题主背景

  • 从业8年——超级内卷500Q技术经理——目前专注go和微服务架构