宠物美容网站建设合同书,多用户网站管理系统,市场监督管理局不处理问题怎么办,网上国网app推广经验题目#xff1a;
你有一个只支持单个标签页的 浏览器 #xff0c;最开始你浏览的网页是 homepage #xff0c;你可以访问其他的网站 url #xff0c;也可以在浏览历史中后退 steps 步或前进 steps 步。
请你实现 BrowserHistory 类#xff1a;
BrowserHistory(string h…题目
你有一个只支持单个标签页的 浏览器 最开始你浏览的网页是 homepage 你可以访问其他的网站 url 也可以在浏览历史中后退 steps 步或前进 steps 步。
请你实现 BrowserHistory 类
BrowserHistory(string homepage) 用 homepage 初始化浏览器类。void visit(string url) 从当前页跳转访问 url 对应的页面 。执行此操作会把浏览历史前进的记录全部删除。string back(int steps) 在浏览历史中后退 steps 步。如果你只能在浏览历史中后退至多 x 步且 steps x 那么你只后退 x 步。请返回后退 至多 steps 步以后的 url 。string forward(int steps) 在浏览历史中前进 steps 步。如果你只能在浏览历史中前进至多 x 步且 steps x 那么你只前进 x 步。请返回前进 至多 steps步以后的 url 。 示例 输入
[BrowserHistory,visit,visit,visit,back,back,forward,visit,forward,back,back]
[[leetcode.com],[google.com],[facebook.com],[youtube.com],[1],[1],[1],[linkedin.com],[2],[2],[7]]
输出
[null,null,null,null,facebook.com,google.com,facebook.com,null,linkedin.com,google.com,leetcode.com]解释
BrowserHistory browserHistory new BrowserHistory(leetcode.com);
browserHistory.visit(google.com); // 你原本在浏览 leetcode.com 。访问 google.com
browserHistory.visit(facebook.com); // 你原本在浏览 google.com 。访问 facebook.com
browserHistory.visit(youtube.com); // 你原本在浏览 facebook.com 。访问 youtube.com
browserHistory.back(1); // 你原本在浏览 youtube.com 后退到 facebook.com 并返回 facebook.com
browserHistory.back(1); // 你原本在浏览 facebook.com 后退到 google.com 并返回 google.com
browserHistory.forward(1); // 你原本在浏览 google.com 前进到 facebook.com 并返回 facebook.com
browserHistory.visit(linkedin.com); // 你原本在浏览 facebook.com 。 访问 linkedin.com
browserHistory.forward(2); // 你原本在浏览 linkedin.com 你无法前进任何步数。
browserHistory.back(2); // 你原本在浏览 linkedin.com 后退两步依次先到 facebook.com 然后到 google.com 并返回 google.com
browserHistory.back(7); // 你原本在浏览 google.com 你只能后退一步到 leetcode.com 并返回 leetcode.com提示
1 homepage.length 201 url.length 201 steps 100homepage 和 url 都只包含 . 或者小写英文字母。最多调用 5000 次 visit back 和 forward 函数。
解法栈 class BrowserHistory {
private:std::stackstd::string backStack; // 用于存储后退历史的栈std::stackstd::string forwardStack; // 用于存储前进历史的栈std::string currentPage; // 当前页面public:BrowserHistory(std::string homepage) {currentPage homepage;}void visit(std::string url) {// 访问新页面时清空前进历史while (!forwardStack.empty()) {forwardStack.pop();}// 将当前页面压入后退历史栈backStack.push(currentPage);// 更新当前页面currentPage url;}std::string back(int steps) {// 后退 steps 步但不能超过后退历史栈的大小while (steps 0 !backStack.empty()) {forwardStack.push(currentPage);currentPage backStack.top();backStack.pop();steps--;}return currentPage;}std::string forward(int steps) {// 前进 steps 步但不能超过前进历史栈的大小while (steps 0 !forwardStack.empty()) {backStack.push(currentPage);currentPage forwardStack.top();forwardStack.pop();steps--;}return currentPage;}
};
代码解释 BrowserHistory(string homepage): 初始化浏览器历史记录设置当前页面为 homepage。 void visit(string url): 当访问一个新页面时清空前进历史栈因为访问新页面后无法再前进到之前的页面。 将当前页面压入后退历史栈。 更新当前页面为新的 url。 string back(int steps): 从后退历史栈中弹出页面最多弹出 steps 步。 每后退一步将当前页面压入前进历史栈。 返回后退后的当前页面。 string forward(int steps): 从前进历史栈中弹出页面最多弹出 steps 步。 每前进一步将当前页面压入后退历史栈。 返回前进后的当前页面。