现在要自己来实现这些数据结构和常用算法了。
把基础再打牢一些。
栈的作用很大,无须多言。
我尽量看了题目要求,自己来实现代码的。
# coding = utf-8
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items) - 1]
def size(self):
return len(self.items)
def par_checker(chk_par):
s = Stack()
balanced = True
for par in chk_par:
if par in "[({":
# 入栈
s.push(par)
else:
if s.is_empty():
balanced = False
break
else:
# 出栈并判断
open_par = s.pop()
close_par = par
if not check_match(open_par, close_par):
balanced = False
break
if s.is_empty() and balanced:
return True
else:
return False
def check_match(open_par, close_par):
opener = "[({"
closer = "])}"
# 使用index返回对应位置
return opener.index(open_par) == closer.index(close_par)
print(par_checker("([{}])"))
print(par_checker(")))(())"))
print(par_checker("(())))))))"))
print(par_checker("(((((((((())))))))"))
print(par_checker("(()({(([[]]))})()()()(()))"))
print(par_checker("(()()(()()()(()))"))
输出:
C:\Users\Sahara\.virtualenvs\untitled\Scripts\python.exe D:/test/python_stack.py
True
False
False
False
True
False
Process finished with exit code 0