10.3 מחסנית ותור פתרון
מחסנית - סוגריים תקינים¶
class Stack:
def __init__(self):
self.items = []
def push(self, item) -> None:
self.items.append(item)
def pop(self):
return self.items.pop() if self.items else None
def is_empty(self) -> bool:
return len(self.items) == 0
def is_valid(s: str) -> bool:
stack = Stack()
pairs = {')': '(', ']': '[', '}': '{'}
for char in s:
if char in '([{':
stack.push(char)
elif char in ')]}':
if stack.is_empty() or stack.pop() != pairs[char]:
return False
return stack.is_empty()
print(is_valid("()")) # True
print(is_valid("()[]{}" )) # True
print(is_valid("(]")) # False
print(is_valid("([)]")) # False
print(is_valid("{[]}")) # True
תור - ניהול תור לקוחות¶
from queue import Queue
class CustomerQueue:
def __init__(self):
self._queue = Queue()
def join(self, name: str) -> None:
self._queue.put(name)
print(f"{name} הצטרף לתור.")
def call_next(self) -> str | None:
if self._queue.empty():
print("אין לקוחות ממתינים.")
return None
name = self._queue.get()
print(f"קורא ל: {name}")
return name
def waiting_count(self) -> int:
return self._queue.qsize()
def print_queue(self) -> None:
items = list(self._queue.queue)
if not items:
print("התור ריק.")
else:
print("ממתינים:", " -> ".join(items))
q = CustomerQueue()
q.join("Amit")
q.join("Dana")
q.join("Yossi")
q.print_queue()
print(f"ממתינים: {q.waiting_count()}")
q.call_next()
q.print_queue()
שאלות Leetcode¶
אין פתרון קוד כאן - פתרו בעצמכם ב-Leetcode. אם תקועים, קראו את הפתרון הרשמי ואז כתבו אותו מחדש בלי להסתכל.