现在要自己来实现这些数据结构和常用算法了。
把基础再打牢一些。
栈的作用很大,无须多言。
我尽量看了题目要求,自己来实现代码的。
# 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