cf C. Fixing Typos
http://codeforces.com/contest/363/problem/C
s2用于存处理之后的字符串,再遍历s1的时候,s2会有两种情况1.s2最后两个字符是相同的如xx,如果这时再遇到一个x是不行的;2最后三个字符为xxy,如果这是遇到y也是不行的。除了这两种情况,s1的字符都可以复制到s2中。
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #define maxn 2000010 6 using namespace std; 7 8 char s1[maxn],s2[maxn]; 9 10 int main() 11 { 12 scanf("%s",s1); 13 int k=strlen(s1); 14 if(k<=2) 15 { 16 printf("%s\n",s1); 17 return 0; 18 } 19 s2[0]=s1[0]; 20 s2[1]=s1[1]; 21 int cnt=2; 22 for(int i=2; i<k; i++) 23 { 24 if(s1[i]==s2[cnt-1]&&s1[i]==s2[cnt-2]) 25 { 26 continue; 27 } 28 else if(s1[i]==s2[cnt-1]&&s2[cnt-2]==s2[cnt-3]&&i>=3) 29 { 30 continue; 31 } 32 else 33 { 34 s2[cnt++]=s1[i]; 35 } 36 } 37 s2[cnt]='\0'; 38 printf("%s",s2); 39 return 0; 40 }