T4 混乱的文本https://www.iai.sh.cn/problem/802
题目描述
小爱正在使用一种文本编辑器输入文字。文本编辑器的工作机制如下:
- 若用户键入一个
[
,则光标立即跳到文本的开头; - 若用户键入一个
]
,则光标立即跳到文本的末尾; - 若用户键入任意字母,则在光标处插入该字母,且光标停留在新插入字母的后面。
给定一个字符序列,表示小爱敲击键盘录入的符号序列,请输出最后获得的文本。
输入格式
- 一个字符序列:表示键入的字符序列。
输出格式
- 一个字符序列:表示最后获得的文本。
数据范围
设 n 表示输入字符序列的长度
- 30% 的数据,1≤n≤1000
- 60% 的数据,1≤n≤20,000
- 100% 的数据,1≤n≤300,000
样例数据
输入:
abc[xyz]efg
输出:
xyzabcefg
#include <bits/stdc++.h>
using namespace std;
string s,str;
char tmp[300005];
int main () {
int p=0, ti=0;
char c;
cin>>s;
int len = s.length();
for(int i=0; i<len; i++){
if(s[i]=='['){
tmp[ti]='\0';//结束符
str.insert(p,string(tmp)); //整块插入
ti = 0;
p = 0;
}
else if( s[i]==']'){
tmp[ti]='\0';
str.insert(p,string(tmp));
ti = 0;
p = str.length();
}
else{
tmp[ti++]=s[i];//ÁÙʱ´æ´¢
}
}
tmp[ti]='\0';
str.insert(p,string(tmp));
//逐个字符插入会超时
// for(int j=0; j<ti; j++){
// str.insert(p,1,tmp[j]);
// p++;
// }
cout<<str;
return 0;
}