把给定字符串翻译成目标字符串需要满足的条件是:

1、开头不能有空格

2、末尾不能有空格

3、给定标点前不能有空格

4、不能有A、E、I、O、U

5、空格不能和空格相邻

6、相同的字母只能出现1次

给出一组测试数据('_'表示空格):

input

_I_AM_M._

output

M.

这道题是水题,但是我忽视了一点导致错误。

形如"_I_AM_M._"这个输入。

我开始的方法是从头扫空格,遇到字母就停下,这样I前的空格很容易就去掉了,但是像此种情况,I和A都是要去掉的字母,而I和A之间又有空格,这样的结果就是输出的M前会多一个空格,PE。避免这种错误的方法很简单,只要得要ans数组以后再扫就可以了,而不是直接扫输入的数组。在这种要去掉很多字母的情况下,最后处理空格最稳妥。这题的错误一方面是因为我托大的心态,另一方面是经验不足,以后要吸取教训。

#include <iostream>
using namespace std ;
int main()
{
char str[],ans[] ;
int num[] ;
int top ;
while(gets(str))
{
if(str[]==EOF)
break ;
int len=strlen(str) ;
top= ;
int f= ;//判断多个空格不能相邻的标志
memset(num,,sizeof(num)) ;
for(int i=;i<len;i++)
{
if(str[i]==' ' && f)
{
ans[top++]=' ' ;
f= ;
continue ;
}
else if(str[i]==' ')
continue ;
if(str[i]=='A' || str[i]=='E' || str[i]=='I' || str[i]=='O' || str[i]=='U')//跳过的字母
{
continue ;
}
if(str[i]=='.' || str[i]==',' || str[i]=='?')//打印标点
{
ans[top++]=str[i] ;
f= ;
continue ;
}
if(num[str[i]]==)//打印字母
{
ans[top++]=str[i] ;
num[str[i]]= ;
f= ;
continue ;
}
}
//printf("%d %s",top,ans) ;
while(ans[top-]==' ')//末尾不能是空格
top-- ;
int cnt ;
for(int i=;i<top;i++)//输出前面不能有空格
if(ans[i]!=' ')
{
cnt=i ;
break ;
}
for(int i=cnt;i<top;i++)
{
if(ans[i]==' ' && (ans[i+]=='.' || ans[i+]==',' || ans[i+]=='?'))//去掉标点前的空格
continue ;
else
printf("%c",ans[i]) ;
}
putchar('\n') ;
}
return ;
}

POJ 1951的更多相关文章

  1. POJ 1951 模拟

    思路: 坑爹模拟毁我一生 给两组数据: 输入: YOURE TRAVELING THROUGH ANOTHER DIMENSION A DIMENSION NOT OF SIGHT. 输出: YR T ...

  2. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  3. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  4. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  5. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  6. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

  7. POJ题目分类(转)

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  8. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  9. POJ题目(转)

    http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法:     (1)枚举. (poj1753,poj29 ...

随机推荐

  1. Spring @Scheduler使用cron时的执行问题

    主要想弄清使用Spring @Scheduler cron表达式时的两个问题: 同一定时任务,第二次触发时间到了,第一次还没有执行完成时会执行吗? 不同的定时任务,相互之间是否有影响? 结论写在前面: ...

  2. kubernetes dashboard 二次开发

    Kubernetes Dashboard 二次开发 官方源码:https://github.com/kubernetes/dashboard 开发文档:https://github.com/kuber ...

  3. 对dataframe中某一列进行计数

    本来是一项很简单的任务...但很容易忘记搞混..所以还是记录一下 方法一: df['col'].value_counts() 方法二: groups = df.groupby('col') group ...

  4. Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011

    Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...

  5. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章,结合《XXX重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术,将上述内容撰写成一篇1500字左右的博客阐述你的观点。

    这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 首先,网站的可用性描述网站可有效访问的特性,相比于网站的其他非功能特性,网站的可用性更容易引起人们的注意,尤其是大型网站的可用性,如果大公司的网站出 ...

  6. UVA-10537 The Toll! Revisited (dijkstra)

    题目大意:每经过一个地方就要交出相应的货物作为过路费,问将一批货物从起点运到终点,最少需要携带多少货物? 题目分析:在每一站交的过路费由当前拥有的货物量来决定,所以,要以终点为源点,求一次单源最短路即 ...

  7. Regression 手动实现Gradient Descent

    import numpy as np import matplotlib.pyplot as plt x_data = [338.,333.,328.,207.,226.,25.,179.,60.,2 ...

  8. springboo 添加logback日志

    springboot默认引入logback相关的jar包 1.在 Application.properties里添加 logging.config=classpath:logback-spring.x ...

  9. Python抓取糗事百科成人版图片

    最近开始学习爬虫,一开始看的是静觅的爬虫系列文章,今天看到糗事百科成人版,心里就邪恶了一下,把图片都爬下来吧,哈哈~ 虽然后来实现了,但还是存在一些问题,暂且不提,先切入正题吧,没什么好说的,直接上代 ...

  10. Check for Palindromes

    如果给定的字符串是回文,返回true,反之,返回false. 如果一个字符串忽略标点符号.大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文). 注意你需要去掉字符串多 ...