题意:
在给定的字符串中可能出现,‘[’,‘]’这两个符号,[代表返回字符串头,]代表返回字符串尾。
求原串。
这题可以用双向队列解决。按字符串给定的顺序分别将[号压入队头,]号压入队尾即可。
#include <cmath>
#include <ctime>
#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <cctype>
#include <stack>
#include <deque>
using namespace std;
typedef long long LL;
#define EPS 10e-9
#define INF 0x3f3f3f3f
#define REP(i,n) for(int i=0; i<(n); i++)
char str[100010];
int main(){
while(scanf("%s",str)!=EOF){
deque<int > q;
int i=0;
while(str[i]=='['||str[i]==']') i++;
q.push_front(i);
while(str[i]){
if(str[i]=='['){
q.push_front(i+1);
str[i]='\0';
}
else if(str[i]==']'){
q.push_back(i+1);
str[i]='\0';
}
i++;
}
while(!q.empty()){
printf("%s",str+q.front());
q.pop_front();
}
printf("\n");
}
return 0;
}