2015年1月4日星期日

[UVa] 11988 - Broken Keyboard

犯了嚴重錯誤
在迴圈之前應該就要給定strlen值
否則會TLE

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <list> // STL linked list
#include <iostream>
using namespace std;
list<char> text;
list<char>::iterator it=text.begin();
int main(){
  char input[100001];
  while(scanf("%s",input)!=EOF){
    int length = strlen(input); //重點:不在迴圈中呼叫strlen,否則TLE
    text.clear();
    it = text.begin();
    for(int i=0;i<length;i++){
      if(input[i]=='[')it=text.begin();
      else if(input[i]==']')it=text.end();
      else{
        text.insert(it,input[i]);
      }
    } 
    for(it=text.begin();it!=text.end();it++) printf("%c",*it);
    printf("\n");
  }
  return 0;
}

沒有留言: