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

 

你可能感兴趣的:(OS)