超究极无敌鸡心
2024-02-20 17:53:59
发布于:北京
求助
例子world_c++ 没hello
题干:
T5930.一个有自己想法的键盘
题目描述
有一个有点破损的键盘,但也不能算完全破损的键盘,正在打字员手上被使用着。打字员往往是不看键盘,甚至是不看屏幕的。但不幸的是,键盘上有两个按键出了问题:
HOME 按键,回到行首,偶尔会自己触发功能。
END 按键,到达行尾,偶尔会自己触发功能。
打字员在疯狂地码字,直到他把眼镜重新看到自己的显示器,才发现自己码的内容,乱七八糟。
Description
现在将 HOME 的触发用 [ 表示, END 的触发用 ] 表示。给出若干行输入的字符串,请输出其实际出现在屏幕上的内容。
输入格式
输入若干行,每行一行字符串,[ 表示触发 HOME , ] 表示触发 END。
输出格式
输出若干行,每行对应一个输入行的实际结果。
输入输出样例
输入#1
复制
hello_[world]_c++
[[]][][]Beiju_University
输出#1
复制
worldhello__c++
Beiju_University
说明/提示
每行字符串长度不超过
1000000
1000000。
【样例解释 #1】
hello_ 后遇到 [,回到行首,从 hello_ 前面输入,worldhello_。遇到 ],到达行尾,从 worldhello_ 后面开始输入,得到 worldhello_c++。
[[]][][] 到达行尾,然后输入 Beiju_University,得到 Beiju_University。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
struct node {
char data;
int prev, next;
};
node point[N];
int head, tail, lp;
int main () {
string s;
while(cin>>s){
int l = s.length();
head = 1; tail = l;
point[head].prev = 0;point[head].next = tail;
point[tail].next = 0;point[tail].prev = head;
int p = 1, idx = 1;
for(int i = 0;i < l;i++){
if(s[i] == '[')
p = point[head].next;
else if(s[i] == ']')
p = tail;
else{
point[++idx].data = s[i];
point[point[p].prev].next = idx;
point[idx].prev = point[p].prev;
point[idx].next = p;
point[p].prev = idx;
}
}
p = point[head].next;
while(p!=tail){
cout<<point[p].data;
p = point[p].next;
}
cout<<endl;
}
}
球球各位大佬救一下qwq
全部评论 3
fwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfw
2024-02-20 来自 北京
0#include <bits/stdc++.h>
using namespace std;const int N = 1000090;
struct node {
char data;
int prev, next;
};
node point[N];
int head, tail, lp;void print_lst() {
int step = head;2024-02-20 来自 北京
0我c++没有缺一个+
2024-02-20 来自 北京
0
有帮助,赞一个