Broken Keyboard 破损键盘 UVA 11988
- #include
- #include
- const int maxn=100000+10;
- int linked[maxn]; //通过数组模拟链表
- char s[maxn];
- int main(){
- while(scanf(“%s”,s+1)==1){ //输入保存在s[1],s[2]….中
- int len=strlen(s+1);
- linked[0]=0;
- int cur=0,last=0;
- for(int i=1;i<=len;i++){
- if(s[i]==’[‘)cur=0;
- else if(s[i]==’]‘)cur=last;
- else {
- linked[i]=linked[cur];
- linked[cur]=i;
- if(cur==last)last=i; //更新”最后一个字符”编号
- cur=i; //移动光标
- }
- }
- for(int i=linked[0];i!=0;i=linked[i])
- printf(“%c”,s[i]);
- printf(“\n”);
- }
- return 0;
- }
还没有评论,来说两句吧...