用链表做的。看了一天,忽略了链表的本质,所以一直看不懂。刚才画了画图,勉强懂了点。
#include<cstdio> #include<cstring> #define MAXN_STR_LEN 100100 char s[MAXN_STR_LEN]; int main() { while(~scanf("%s", s + 1)) { int len = strlen(s + 1); int cur = 0, last = 0; int next[MAXN_STR_LEN]; next[0] = 0; for(int i = 1; i <= len; i++) { if(s[i] == '[') cur = 0; else if(s[i] == ']') cur = last; else { next[i] = next[cur]; next[cur] = i; if(cur == last) last = i; cur = i; } } for(int i = next[0]; i != 0; i = next[i]) printf("%c", s[i]); printf("\n"); } return 0; }