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 }
View Code

 

posted @ 2014-08-29 16:21  null1019  阅读(148)  评论(0编辑  收藏  举报