在Python中检查表达式O(1)空间O(N ^ 2)时间复杂度的圆括号

假设我们有一个字符串str,其中包含这些括号'(',')','{','}','['和']',我们必须检查括号是否平衡。可以说,当开括号和闭括号类型相同时,括号是平衡的。支架以正确的顺序关闭。

因此,如果输入类似于{([]]},则输出将为True。

为了解决这个问题,我们将遵循以下步骤-

  • cnt:= 0

  • i:= 0

  • j:= -1

  • 定义一个功能solve()。这需要s,临时

  • cnt:= cnt-1

  • s:=来自s的新列表

  • 如果j> -1并且s [j]与temp相同,则

    • j:= j-1

    • s [i]:='#'

    • s [j]:='#'

    • 当j> = 0且s [j]与'#'相同时,执行

    • 我:=我+ 1>

    • 返回1

    • 除此以外,

      • 返回0

    • 从主要方法中,执行以下操作-

    • 如果s的大小等于0,则

      • 返回True

    • 除此以外,

      • 返回False

      • 如果s [i]与'}'相同,则

      • j:=我

      • 我:=我+ 1

      • cnt:= cnt + 1

      • ans:= solve(s,'[')

      • 如果ans与0相同,则

      • 返回False

      • ans:= solve(s,'(')

      • 如果ans与0相同,则

      • 返回False

      • 返回False

      • ans:= solve(s,'{')

      • 如果ans与0相同,则

      • 否则,当s [i]与')'相同时,则

      • 否则,当s [i]与']'相同时,则

      • 除此以外,

      • 回答:= False

      • 当我<的大小不为零时,

      • 如果cnt不等于0,则

      • 返回True

      示例

      让我们看下面的实现以更好地理解-

      cnt = 0
      i = 0
      j = -1
      def solve(s, temp):
         global i, j, cnt
         cnt -= 1
         s = list(s)
         if j > -1 and s[j] == temp:
            s[i] = '#'
            s[j] = '#'
            while j >= 0 and s[j] == '#':
               j -= 1
            i += 1
            return 1
         else:
            return 0
      def bracketOrderCheck(s):
         global i, j, cnt
         if len(s) == 0:
            return True
         else:
            ans = False
            while i < len(s):
               if s[i] == '}':
                  ans = solve(s, '{')
                  if ans == 0:
                     return False
               elif s[i] == ')':
                  ans = solve(s, '(')
                  if ans == 0:
                     return False
               elif s[i] == ']':
                  ans = solve(s, '[')
                  if ans == 0:
                     return False
               else:
                  j = i
                  i += 1
                  cnt += 1
            if cnt != 0:
               return False
            return True
      print(bracketOrderCheck("{([])}"))

      输入值

      "{(()[])}"

      输出结果

      True
      猜你喜欢