Solution
class BrowserHistory:
def __init__(self, homepage: str):
self.history: list[str] = [homepage]
self.pos: int = 0
def visit(self, url: str) -> None:
# CASE: pos is middle of history
if self.pos != len(self.history) - 1:
self.history = self.history[:self.pos + 1]
self.pos += 1
self.history.append(url)
def back(self, steps: int) -> str:
self.pos -= steps
if self.pos < 0:
self.pos = 0
return self.history[self.pos]
def forward(self, steps: int) -> str:
self.pos += steps
if self.pos >= (size := len(self.history)):
self.pos = size - 1
return self.history[self.pos]