题目描述:
题目思路:
1.使用链表来重新定位各个字符
2.用数组实现链表
3.开一个数组list[i]来存储字符数组下一个字符的位置
#include <iostream> #include <cstring> using namespace std; const int maxn = 100000 + 5; int last,cur,list[maxn] ; char s[maxn] ; int main(int argc, char *argv[]) { while(scanf("%s",s+1) == 1) { int len = strlen(s+1); last = cur = 0; list[0] = 0; //指示位置的链表 for(int i = 1;i <= len ;i++) { char ch = s[i] ; if(ch == '[') cur = 0; else if(ch == ']') cur = last ; else{ list[i] = list[cur] ; //光标跳转,指示开头 list[cur] = i; if(cur == last) last = i ; cur = i ; } } for(int i = list[0]; i != 0;i = list[i]) printf("%c",s[i]); cout << endl ; } return 0; }