# -*- coding: utf-8 -*-
'''请在Begin-End之间补充代码, 完成Stack类'''
class Stack():
# 创建空列表实现栈
def __init__(self):
self.__list = []
# 判断是否为空,输出为True或False
def is_empty(self):
# ********** Begin ********** #
return len(self.__list) == 0
# ********** End ********** #
# 压栈,添加元素
def push(self,item):
# ********** Begin ********** #
self.__list.append(item)
# ********** End ********** #
# 弹栈,弹出最后压入栈的元素
def pop(self):
# ********** Begin ********** #
if not self.is_empty():
return self.__list.pop()
else:
return None
# ********** End ********** #
# 栈的长度
def size(self):
# ********** Begin ********** #
return len(self.__list)
# ********** End ********** #
if __name__ == "__main__":
stack = Stack()
nums = input().split()
# 将nums中的元素依次入栈
for num in nums:
stack.push(num)
# 打印栈的长度
print(stack.size())
# 将栈中元素依次弹出
while not stack.is_empty():
print(stack.pop(), end = ' ')
第2关:栈应用之括号匹配问题
# -*- coding: utf-8 -*-
class Stack():
# 创建空列表实现栈
def __init__(self):
self.__list = []
# 判断是否为空
def is_empty(self):
return self.__list == []
# 压栈,添加元素
def push(self,item):
self.__list.append(item)
# 弹栈,弹出最后压入栈的元素
def pop(self):
if self.is_empty():
return
else:
return self.__list.pop()
'''请在Begin-End之间补充完成代码, 完成syntaxChecker函数, 解决括号匹配问题'''
def syntaxChecker(strList):
### strList: 字符串列表
stack = Stack()
left = '([{' # 左括号
right = ')]}' # 右括号
flag = True # 标志位
# ********** Begin ********** #
for symbol in strList:
if symbol in left:
stack.push(symbol)
elif symbol in right:
if stack.is_empty():
flag = False
break
top = stack.pop()
if left.index(top) != right.index(symbol):
flag = False
break
if not stack.is_empty():
flag = False
# ********** End ********** #
return flag
if __name__ == "__main__":
strList = input().split()
result = syntaxChecker(strList)
print(result)