首先我先在这里讲解一下栈的使用
class Stack:
def __init__(self):
self.stack = [] # 使用列表来存储栈的元素
def push(self, element):
self.stack.append(element) # 将元素添加到栈顶
def pop(self):
if not self.is_empty():
return self.stack.pop() # 弹出栈顶元素
else:
return None # 如果栈为空则返回None
def peek(self):
if not self.is_empty():
return self.stack[-1] # 返回栈顶元素但不弹出
else:
return None # 如果栈为空则返回None
def is_empty(self):
return len(self.stack) == 0 # 判断栈是否为空
def size(self):
return len(self.stack) # 返回栈的大小
然后就是我们的题目了
下面是我的代码和我的解题思路
class Solution:
def isValid(self, s: str) -> bool:
stack = [] # 初始化一个空栈
match = {"]": "[", ")": "(", "}": "{"} # 定义右括号与其对应的左括号的映射关系
for item in s: # 遍历输入的字符串中的每个字符
if item in ["(", "{", "["]: # 如果是左括号
stack.append(item) # 将左括号压入栈中
else: # 如果是右括号
if len(stack) == 0: # 如果栈为空,没有与之对应的左括号
return False # 返回 False,括号不匹配
# 检查栈顶元素是否与当前右括号匹配
elif stack.pop() != match[item]: # 如果栈顶元素与当前右括号不匹配
return False # 返回 False,括号不匹配
return len(stack) == 0 # 最后检查栈是否为空,如果为空则返回 True,否则返回 False
so = Solution() # 创建 Solution 类的实例对象
a = so.isValid("(){}") # 调用 isValid 方法,并传入字符串 "(){}"
print(a) # 输出结果
大家想了解一下算法知识的话我推荐去b站上面的【清华大学博士讲解Python数据结构与算法(完整版)全套100节】https://www.bilibili.com/video/BV1uA411N7c5?vd_source=ba017adc1d6555500de71f0ea6bc52dd
#如果上刚入门又想学好python的同学可以从百度网盘打开下面的链接里面是学习python的基础视频:https://pan.baidu.com/s/1R3MU1-lrFVJCqVeLI1SwzQ
提取码:2ptb
各位同学我们一起加油,坚持努力