解题思路
1、利用栈的思想
2、void visit(string url) 从当前页跳转访问 url 对应的页面 。执行此操作会把浏览历史前进的记录全部删除。百思不得其解就是因为这一句没有理解,意为只要visit()新的界面,那么当前界面前的界面就会 被删除,使得新页面直接在原页面的上方。
代码
class BrowserHistory {
public:
int pos;
int top;
string history[5001];
BrowserHistory(string homepage) : pos(-1), top(0) {
visit(homepage);
}
void visit(string url) {
pos ++;//这句很关键
top = pos;
history[top++] = url;
}
string back(int steps) {
if(steps > pos) {
steps = pos;
}
pos -= steps;
return history[pos];
}
string forward(int steps) {
steps = min(steps, top - pos - 1);
pos += steps;
return history[pos];
}
};