1472. 设计浏览器历史记录

思路

周赛看到这道题都乐了,感觉对不起他的5分这个分数。感觉主要考察阅读理解。那首先就阅读理解一下

  • 记录浏览器的访问记录,可以前进可以后退
  • 后退返回之前的页面
  • 前进访问返回前的页面
  • 假如在当前页跳到一个新的页面,那之前的前进页就都作废。就是这时候就前进不了了

我们只要使用两个变量:

  • 队列 用于存放记录
  • 当前页面索引 用于存放当前访问的页面是哪个
  • 接着处理一下返回之后,转跳到新页面需要更新队列的情况
  • 考虑边界情况

AC!

代码

python

  1. class BrowserHistory(object):
  2. def __init__(self, homepage):
  3. """
  4. :type homepage: str
  5. """
  6. self.queue = []
  7. self.queue.append(homepage)
  8. self.curindex = 0
  9. def visit(self, url):
  10. """
  11. :type url: str
  12. :rtype: None
  13. """
  14. if self.curindex < (len(self.queue) - 1):
  15. self.queue = self.queue[:self.curindex + 1][::]
  16. self.queue.append(url)
  17. self.curindex = len(self.queue) - 1
  18. def back(self, steps):
  19. """
  20. :type steps: int
  21. :rtype: str
  22. """
  23. if self.curindex - steps < 0:
  24. self.curindex = 0
  25. return self.queue[0]
  26. else:
  27. self.curindex -= steps
  28. return self.queue[self.curindex]
  29. def forward(self, steps):
  30. """
  31. :type steps: int
  32. :rtype: str
  33. """
  34. if self.curindex + steps > len(self.queue) - 1:
  35. self.curindex = len(self.queue) - 1
  36. return self.queue[(len(self.queue) - 1)]
  37. else:
  38. self.curindex += steps
  39. return self.queue[self.curindex]