POJ 1951
把给定字符串翻译成目标字符串需要满足的条件是:
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的更多相关文章
- POJ 1951 模拟
思路: 坑爹模拟毁我一生 给两组数据: 输入: YOURE TRAVELING THROUGH ANOTHER DIMENSION A DIMENSION NOT OF SIGHT. 输出: YR T ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- POJ题目分类(转)
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- POJ题目(转)
http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法: (1)枚举. (poj1753,poj29 ...
随机推荐
- OpenStack与Hadoop的区别与联系
Openstack是云操作系统,是将物理机虚拟化的云服务平台,包含各种管理组件及API.Hadoop则是“云计算”中分布式计算核心:存储与计算.但其两者面向是不同层面的.举个例子:比如现有多台底层的物 ...
- linux centos7安装phpMyAdmin详解,以及解决各种bug问题
使用php和mysql开发网站的话,phpmyadmin和navicat是目前非常好的mysql管理工具,但是phpmyadmin最主要是免费开源,目前很多集成的开发环境都会自带phpmyadmin, ...
- PyTorch源码解读之torchvision.models(转)
原文地址:https://blog.csdn.net/u014380165/article/details/79119664 PyTorch框架中有一个非常重要且好用的包:torchvision,该包 ...
- nginx web服务器详解1(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.blog.51cto.com/2033581/1285332 大 ...
- Yii框架(一)
这里接触了 MVC 设计模式中的控制器和视图部分. 创建了一个操作作为控制器的一部分去处理特定请求. 然后又创建了一个视图去构造响应内容. 在这个小例子中,没有模型调用,唯一涉及到数据的地方是 mes ...
- 修改sublime侧边栏的颜色
Ctrl+Shift+P -> install -> 搜索安装包SyncedSidebarBg,自动同步侧边栏底色为编辑窗口底色.
- angularjs1 自定义图片查看器(可旋转、放大、缩小、拖拽)
笔记: angularjs1 制作自定义图片查看器(可旋转.放大.缩小.拖拽) 2018-01-12 更新 可以在我的博客 查看我 已经封装好的 纯 js写的图片查看器插件 博客链接 懒得把 ...
- 阿里云centOS7.4 ftp连接不上的问题
首先查看是开启21端口 选择ECS-->安全组-->配置规则 增加21端口配置 配置如下
- 14.并发容器之ConcurrentHashMap(JDK 1.8版本)
1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hasht ...
- torch 深度学习(4)
torch 深度学习(4) test doall files 经过数据的预处理.模型创建.损失函数定义以及模型的训练,现在可以使用训练好的模型对测试集进行测试了.测试模块比训练模块简单的多,只需调用模 ...