> 技术文档 > 力扣1472. 设计浏览器历史记录

力扣1472. 设计浏览器历史记录

力扣1472. 设计浏览器历史记录
力扣1472. 设计浏览器历史记录
这一题是模拟浏览器纪录的过程,只需要在脑海中有这个场景的过程就很好写了。
而浏览器的前进和回退是用到栈的思想,所以我不假思索的选择了用栈来解决这个题。
我们需要用一个cut保存当前所在的页面,用一个栈保存回退的记录,再用一个栈保存前进的记录。
具体代码如下:

class BrowserHistory {public: string cut; stack<string> backs; stack<string> forwards; BrowserHistory(string homepage) { cut=homepage; } void visit(string url) { backs.push(cut); while(!forwards.empty()) { forwards.pop(); } cut=url; } string back(int steps) { while(steps>0&&backs.size()) { forwards.push(cut); cut=backs.top(); backs.pop(); steps--; } return cut; } string forward(int steps) { while(steps>0&&forwards.size()) { backs.push(cut); cut=forwards.top(); forwards.pop(); steps--; } return cut; }};/** * Your BrowserHistory object will be instantiated and called as such: * BrowserHistory* obj = new BrowserHistory(homepage); * obj->visit(url); * string param_2 = obj->back(steps); * string param_3 = obj->forward(steps); */

脑海里有浏览器的场景就很好写。