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 ...
随机推荐
- vue编译环境和线上环境url切换
新建一个配置js,导入到接口请求管理类,可以自动根据环境切换if (process.env.NODE_ENV == 'development') { baseUrl = ''; }else{ base ...
- 爬虫之Handler处理器 和 自定义Opener
Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,我们之前一直都在使用的urlopen,它是一个特殊的opener(也就是模块帮我们构 ...
- C++ 读取文件所有内容的方法
方法一 #include <fstream> #include <string> #include <iostream> using namespace std; ...
- layui和bootstrap 对比
layui和bootstrap 对比 这两个都属于UI渲染框架. layui是国人开发的一套框架,2016年出来的,现在已更新到2.X版本了.比较新,轻量级,样式简单好看. bootstrap 相对来 ...
- asp.net core + log4net+exceptionles+DI
参考了ABP的代码,我也用依赖注入的原则,设计了日志模块. 与abp不同之处在于:1)DI容器使用的是.net core自带的注入容器,2)集成了excetpionless日志模块,3)不依赖于abp ...
- Memcached CAS 命令
Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作 它仅在当前客户端最后一次取值后,该key 对应 ...
- 【Python】常用排序算法的python实现和性能分析
作者:waterxi 原文链接 背景 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试题整 ...
- 实用SQL语句
sp_depends t_im_flow 获取到与这个表有关系的存储过程.触发器.函数.视图等.
- [mybatis]Record与Example的用法
一.Record 一个Record是一个Dao对象(继承Mapper接口),tkmybatis会将record自动映射成sql语句,record中所有非null的属性都作为sql语句,如: 映射的sq ...
- ubuntu16.04 安装以及要做的事情
1.安装ubuntu 选择安装时更新,以及MP3.图形等:然后选择分区(ext4)(安装时需先进入虚拟系统连上网,输入清华net账号),分区情况按照下图来,swap为临时用的内存分区,可以不要: 选择 ...