1. # 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    2. #
    3. # 有效字符串需满足:
    4. #
    5. #
    6. # 左括号必须用相同类型的右括号闭合。
    7. # 左括号必须以正确的顺序闭合。
    8. #
    9. #
    10. # 注意空字符串可被认为是有效字符串。
    11. #
    12. # 示例 1:
    13. #
    14. # 输入: "()"
    15. # 输出: true
    16. #
    17. #
    18. # 示例 2:
    19. #
    20. # 输入: "()[]{}"
    21. # 输出: true
    22. #
    23. #
    24. # 示例 3:
    25. #
    26. # 输入: "(]"
    27. # 输出: false
    28. #
    29. #
    30. # 示例 4:
    31. #
    32. # 输入: "([)]"
    33. # 输出: false
    34. #
    35. #
    36. # 示例 5:
    37. #
    38. # 输入: "{[]}"
    39. # 输出: true
    40. # Related Topics 栈 字符串
    41. # 👍 2079 👎 0
    42. # leetcode submit region begin(Prohibit modification and deletion)
    43. class Solution(object):
    44. def isValid(self, s):
    45. """
    46. :type s: str
    47. :rtype: bool
    48. """
    49. if not s:
    50. return False
    51. cMap = {
    52. ")": "(",
    53. "}": "{",
    54. "]": "[",
    55. }
    56. stack = []
    57. for k, v in enumerate(s):
    58. if v not in cMap:
    59. stack.append(v)
    60. else:
    61. if len(stack) > 0 and cMap[v] == stack[-1]:
    62. stack.pop()
    63. else:
    64. return False
    65. return len(stack) <= 0
    66. # leetcode submit region end(Prohibit modification and deletion)
    67. print(Solution().isValid(")"))