UVA 11988

来源:互联网 发布:matlab plot画数组 编辑:程序博客网 时间:2024/04/30 22:57

题意:

在给定的字符串中可能出现,‘[’,‘]’这两个符号,[代表返回字符串头,]代表返回字符串尾。

求原串。

这题可以用双向队列解决。按字符串给定的顺序分别将[号压入队头,]号压入队尾即可。

#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;}


原创粉丝点击