力扣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);*/
脑海里有浏览器的场景就很好写。