题目链接:http://codeforces.com/problemset/problem/363/C

题目意思:纠正两种类型的typos。第一种为同一个字母连续出现3次以上(包括3次);另一种为两个不同的字母各出现2次。需要把使用最少次数而纠正好的word输出来。

为了方便操作,这里我都是通过删去后一个字母来纠正typo的,即如果是wwaattyy,假设看成两组:wwaa和ttyy,那么纠正完的分别是:wwa和tty。至于第一种类型的typo比第二种简便,只需要把同一个字母删除到只剩下2个即可。

注意,这里的删去并不是真的删去,而是通过向应该删去的元素赋值,这里以字符'0'来处理。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = + ;
char s[maxn]; int main()
{
int i, j, k, l, len, cnt1, cnt2;
while (gets(s))
{
len = strlen(s);
for (i = ; i < len; i++)
{
cnt1 = ; //统计第一个字母的个数
j = i+;
if (s[i] == s[j] && j < len)
{
cnt1++;
if (cnt1 == ) //相同字母有两个,后面有两种情况
{
//一:这个字母可能有>=3个,此时要删除到只剩下2个(以作标记作为删除)
k = j+;
while (s[j] == s[k] && k < len) //第一类typo
{
s[k] = ''; //删除到只剩下2个
k++;
}
//二:第二类typo
cnt2 = ;
l = k+;
if (s[k] == s[l] && l < len)
{
cnt2++;
if (cnt2 == ) //删除到只剩下一个
{
s[l] = '';
while (s[k] == s[l+] && l+ < len)
{
s[l+] = '';
l++;
}
}
}
}
i = l-;
}
}
for (i = ; i < len; i++)
{
if (s[i] != '') //没有删去的输出
printf("%c", s[i]);
}
printf("\n");
}
return ;
}

codeforces C. Fixing Typos 解题报告的更多相关文章

  1. Codeforces Round 665 赛后解题报告(暂A-D)

    Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...

  2. Codeforces Round 662 赛后解题报告(A-E2)

    Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...

  3. Codeforces Round #277.5 解题报告

    又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...

  4. codeforces B. Simple Molecules 解题报告

    题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...

  5. codeforces 591A. Wizards' Duel 解题报告

    题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...

  6. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  7. codeforces 581C. Developing Skills 解题报告

    题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...

  8. codeforces 577B. Modulo Sum 解题报告

    题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ...

  9. codeforces 540B.School Marks 解题报告

    题目链接:http://codeforces.com/problemset/problem/540/B 题目意思:给出 k 个test的成绩,要凑剩下的 n-k个test的成绩,使得最终的n个test ...

随机推荐

  1. 【ZOJ 3844】Easy Task

    题意 每次把序列中最大的数a的一个和最小的数b的一个变成a-b.求最后是否能使序列里的数全部相同,能则输出这个相同的数. 分析 一定是有解的,不断减少最大数的个数,最大数减少为0个时,就是减少了不同数 ...

  2. 【poj1009】 Edge Detection

    http://poj.org/problem?id=1009 (题目链接) 不得不说,poj上的水题还是质量非常高的= =,竟然让本大爷写了一下午. 转自:http://blog.sina.com.c ...

  3. BZOJ2301 莫比乌斯反演

    题意:a<=x<=b,c<=y<=d,求满足gcd(x,y)=k的数对(x,y)的数量         ((x,y)和(y,x)不算同一个) 比hdu1695多加了个下界,还有 ...

  4. [NOIP2010] 普及组

    三国游戏 题目内容不放了 由于电脑总是会拆掉最大的组合,所以玩家最多只能得到数值第二大的组合 那么找出第二大的组合就行了 #include<iostream> #include<cs ...

  5. 获取Trustedinstalled权限.reg

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT*\shell\runas] @="获取TrustedInstaller权限&q ...

  6. C#获得系统打开的端口和状态

    实际是通过c#编程方式调用了CMD命令行,然后调用netstat命令,然后将CMD命令的输出流转到了C#控制台程序上.也可以将结果输出到文件. using System; using System.C ...

  7. HTTPS 协议降级攻击原理

    0x00 HTTPS 在传统流行的web服务中,由于http协议没有对数据包进行加密,导致http协议下的网络包是明文传输,所以只要攻击者拦截到http协议下的数据包,就能直接窥探这些网络包的数据. ...

  8. Weak is not weak,Strong is not strong

    问题 今天做浏览器Controller的时候,碰到了一个奇怪的问题:每次pop浏览器controller之后,等几秒,总会碰到类似下面的错误(其中的xxxController就是浏览器或继承他的子类C ...

  9. POJ2049Finding Nemo(bfs + 构图)

    Finding Nemo Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 8456   Accepted: 1975 Desc ...

  10. CSS------添加注释框

    my.html <div><a href="#" class="tip">你好<span><k>哈哈哈哈< ...