zoukankan      html  css  js  c++  java
  • leetcode_day01

    任务一:有效的括号

    题目链接:https://leetcode-cn.com/problems/valid-parentheses/

    自己的答案:

     1 class Solution:
     2     def isValid(self, s):
     3         s = list(s)
     4         length = len(s)
     5         
     6         #空字符串被认为是有效字符串
     7         if length == 0:
     8             return True
     9         
    10         stringList = ['(', ')', '[', ']', '{', '}']
    11         for s_element in s:
    12             if  s_element not in stringList:
    13                 return False
    14         
    15         counter1 = 0
    16         counter2 = 0
    17         counter3 = 0
    18         for s_ele in s:
    19             if s_ele == "(":
    20                 counter1 += 1
    21             elif s_ele == ")":
    22                 counter1 -= 1
    23             elif s_ele == "[":
    24                 counter2 += 1
    25             elif s_ele == "]":
    26                 counter2 -= 1
    27             elif s_ele == "{":
    28                 counter3 += 1
    29             elif s_ele == "}":
    30                 counter3 -= 1
    31         if counter1 == 0 and counter2 == 0 and counter3 == 0:
    32             return True
    33         else:
    34             return False
    35         

    官方答案:

     1 class Solution(object):
     2     def isValid(self, s):
     3         """
     4         :type s: str
     5         :rtype: bool
     6         """
     7 
     8         # The stack to keep track of opening brackets.
     9         stack = []
    10 
    11         # Hash map for keeping track of mappings. This keeps the code very clean.
    12         # Also makes adding more types of parenthesis easier
    13         mapping = {")": "(", "}": "{", "]": "["}
    14 
    15         # For every bracket in the expression.
    16         for char in s:
    17 
    18             # If the character is an closing bracket
    19             if char in mapping:
    20 
    21                 # Pop the topmost element from the stack, if it is non empty
    22                 # Otherwise assign a dummy value of '#' to the top_element variable
    23                 top_element = stack.pop() if stack else '#'
    24 
    25                 # The mapping for the opening bracket in our hash and the top
    26                 # element of the stack don't match, return False
    27                 if mapping[char] != top_element:
    28                     return False
    29             else:
    30                 # We have an opening bracket, simply push it onto the stack.
    31                 stack.append(char)
    32 
    33         # In the end, if the stack is empty, then we have a valid expression.
    34         # The stack won't be empty for cases like ((()
    35         return not stack
    
    
  • 相关阅读:
    Insus Meta Utility
    The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
    Insus Binary Utility
    asp.net实现文件下载功能
    Column 'Column Name' does not belong to table Table
    程序已被编译为DLL,怎样去修改程序功能
    如何在Web网站实现搜索功能
    如何把数据流转换为二进制字符串
    Asp.net更新文件夹的文件
    如何显示中文月份
  • 原文地址:https://www.cnblogs.com/tommyngx/p/10447412.html
Copyright © 2011-2022 走看看