网页跳转

mac2022-06-30  29

题目:蒜头君每天都在用一款名为“蒜厂浏览器”的软件。在这个浏览器中,一共三种操作:打开页面、回退和前进。它们的功能如下:

打开页面:在地址栏中输入网址,并跳转到网址对应的页面; 回退:返回到上一次访问的页面; 前进:返回到上次回退前的页面,如果上一次操作是打开页面,那么将无法前进。 现在,蒜头君打开浏览器,进行了一系列操作,你需要输出他每次操作后所在页面的网址。

输入格式

第一行输入一个整数 n(0 < n 100000) ,表示蒜头君的操作次数。

接下来一共 nn 行,每行首先输入一个字符串,如果是VISIT,后面接着输入一个不含有空格和换行的网址(网址长度小于 100100),表示蒜头君在浏览器地址栏中输入的网址;如果是BACK,表示蒜头君点击了回退按钮;如果是FORWARD,表示蒜头君点击了前进按钮。

输出格式

对于每次操作,如果蒜头君能操作成功,输出蒜头君操作之后的网址,否则输出Ignore。假设蒜头君输入的所有网址都是合法的。

样例输入 ———————————————— 10 VISIT https://www.jisuanke.com/course/476 VISIT https://www.taobao.com/ BACK BACK FORWARD FORWARD BACK VISIT https://www.jisuanke.com/course/429 FORWARD BACK 样例输出 https://www.jisuanke.com/course/476 https://www.taobao.com/ https://www.jisuanke.com/course/476 Ignore https://www.taobao.com/ Ignore https://www.jisuanke.com/course/476 https://www.jisuanke.com/course/429 Ignore https://www.jisuanke.com/course/476

这题主要要想到来两个栈(坑1); 在两个栈中要进行逻辑运算(写这代码要特别小心因为这里有(坑2)); 还要注意这里有cin,cout输入1问题会导致时间拖慢(坑3); 这行ios::sync_with_stdio(false);能大大加快cin,cout的读取数据的速度;

#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); stack<string> s1,s2; int n; cin>>n; while(n--) { string caozuo,wangzhi; cin>>caozuo; if(caozuo=="VISIT") { cin>>wangzhi; s1.push(wangzhi); cout<<s1.top()<<endl; while(!s2.empty()) s2.pop(); } else if(caozuo=="BACK") { if(s1.empty()) cout<<"Ignore"<<endl; else { s2.push(s1.top()); s1.pop(); if(!s1.empty()) { cout<<s1.top()<<endl; } else { s1.push(s2.top()); s2.pop(); cout<<"Ignore"<<endl; } } } else { if(s2.empty()) cout<<"Ignore"<<endl; else { cout<<s2.top()<<endl; s1.push(s2.top()); s2.pop(); } } } return 0; }
最新回复(0)