Description

fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。
为了使句子不缺少成分,统一换成 “fjxmlhx”。

Input
输入包括多行。每行是一个字符串,长度不超过200。
一行的末尾与下一行的开头没有关系。
Output
输出包含多行,为输入按照描述中变换的结果。
Sample Input
The Marshtomp has seen it all before.
marshTomp is beaten by fjxmlhx!
AmarshtompB
Sample Output
The fjxmlhx has seen it all before.
fjxmlhx is beaten by fjxmlhx!
AfjxmlhxB
Hint

不存在mar shto mp这种用空格分开的情况。

有可能一个句子中有两个以上“marshtomp”。

这道题看起来很简单,并且开始的时候做的也是挺简单的,但是这道题里所使用的库函数和这些库函数的使用方法却是好久都没用,还有关于字符串和字符数组的一些易错点,尘封了好久好久的知识点,开始在考试的时候做这道题的时候走了好多的弯路,先是对不分大小写有点错乱(其实把输入的字符串处理一下,用临时字符串记录变化为小写就好了,这样查找的是变成小写的临时字符串,处理的是输入的字符串);另外,开始的时候不会使用字符串的find()函数,用循环来完成匹配,这样代码就显得超乱,在第二个代码里优化了之后就好多了。

剩下的就很简单了。。。

#include <iostream>
#include <cstdio>
using namespace std;
int main (){char ch[300];string tstr = "marshtomp"while(gets(ch)){string str="",sstr=ch;int j=0; int len=sstr.length();for(int i=0;i<len;i++)  if(sstr[i]<='Z'&&sstr[i]>='A')str= str+(char)(sstr[i]-'A'+'a');else str+=sstr[i];int c=0;for(int i=0;i<len;i++,c++){int temp=i;while(str[temp]==tstr[j]&&temp<len&&j<9){temp++,j++;} if(j==9){sstr.replace(c,9,"fjxmlhx");i+=8,c+=6;} j=0;}cout<<sstr<<endl;}return 0;
}

优化后的代码:

#include <iostream
#include <cstdio>
using namespace std;
int main (){char ch[300];string tarstr = "marshtomp";while(gets(ch)){//获取带空格的字符数组 string tempstr="",sstr=ch;int len=sstr.length();for(int i=0;i<len;i++)  if(sstr[i]<='Z'&&sstr[i]>='A')tempstr= tempstr+(char)(sstr[i]-'A'+'a');else tempstr+=sstr[i];//tempstr+='\0';           //str会在后面自动添加\0,否则长度会变长了,这里可以看出string不同于字符数组,字符数组的话需要加 //cout<<len<<' '<<tempstr.length()<<endl;int c=0;   for(int i=0;i<len;i++,c++){int xx=tempstr.find(tarstr,i);//找出字符串所在的位置 第一个参数为要查找的字符串,第二个为开始查找的起始位置 if(xx!=-1){sstr.replace(xx,9,"fjxmlhx"); //第一个为要替换的起始位置,第二个为要替换的长度,第三个为被替换为的子串 i+=8,c+=6;} }cout<<sstr<<endl;}return 0;
}

这里总结一下这道简单题带给我的收获

从代码的顺序来:

gets()  获取带空格的字符数组

string+=的话就不用再加'\0'了

tempstr.find(tarstr,i);  找出字符串所在的位置 第一个参数为要查找的字符串,第二个为开始查找的起始位置
sstr.replace(xx,9,"fjxmlhx"); 第一个为要替换的起始位置,第二个为要替换的长度,第三个为被替换为的子串

好酸爽。。。

哈尔滨理工大学---沼跃鱼(待整理)相关推荐

  1. hrbust 2242 沼跃鱼

    这个题就是对字符串遍历一下 不要忽视大小写就好 沼跃鱼 Time Limit: 500 MS Memory Limit: 32768 K Total Submit: 507(280 users) To ...

  2. hihoCoder - 1082 - 然而沼跃鱼早就看穿了一切 (字符串处理!!)

    #1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描写叙述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽全 ...

  3. 沼跃鱼早已看穿了一切 C/C++

    沼跃鱼早已看穿了一切 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 593  Solved: 229 [Submit][Status][Web Boa ...

  4. HihoCoder - 1082 然而沼跃鱼早就看穿了一切

    HihoCoder - 1082 #1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的 ...

  5. 然而沼跃鱼早就看穿了一切

    fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼("marshtomp",不区分大小写).为了使句子不缺少成分,统一换成 " ...

  6. #1082 : 然而沼跃鱼早就看穿了一切

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼("marshtom ...

  7. hihocode_1082 沼跃鱼

    fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼("marshtomp",不区分大小写).为了使句子不缺少成分,统一换成 " ...

  8. ZSC - 1306: 沼跃鱼早已看穿了一切 - 题解

    Time Limit: 1 Sec  Memory Limit: 128 MB 题目链接 : http://acm.two.moe:808/JudgeOnline/problem.php?id=130 ...

  9. 【hihocoder】#1082 : 然而沼跃鱼早就看穿了一切

    题目链接:http://hihocoder.com/problemset/problem/1082?sid=791045 题目: fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程 ...

最新文章

  1. 快速解决mongodb出现id重复问题
  2. 第九章 Shell信号发送与捕捉
  3. PayPal宣布退出虚拟货币组织Libra协会
  4. Java并发—基础操作
  5. Debian8.3.0下安装Odoo8.0步骤
  6. Linux unit14
  7. AnnotationConfigApplicationContext ad has not been refreshed yet 错误
  8. asp调用数据库汉字显示乱码解决方案
  9. JSON: jasckson 字段 过滤
  10. python复制包到其他环境_Python虚拟环境导出包安装到另一台电脑的方法
  11. Cython应用手记
  12. IOS学习笔记-UINavgationController
  13. 最小系统板 STM32入门,呼吸灯实现(STM32F103C6T6)
  14. 计算机毕业设计基于Android的计算器app设计
  15. 【Eslint + Prettier + Husky + Commitlint】前端项目代码规范的搭建
  16. c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS
  17. 解决AppBarLayout嵌套WebView滑动冲突的问题
  18. 面向对象--西餐厅(基础实现)
  19. 抖音壁纸小程序v1.0.2版本功能,新增达人入住功能
  20. OpManager 实时网络监控

热门文章

  1. Oracle选择填空题中英文,oracle中英文分开排序
  2. 行之有效的Golang编码规范
  3. Snappy压缩库安装和使用之一
  4. 免费的视频转换器有哪些?推荐3款好用免费视频格式转换软件
  5. 智汇华云|安超云套件Archer Cloudsuite为“信创强国”筑基
  6. 如何让百度搜到我的网站或博客
  7. Duilib样式性大全-Duilib属性大全-Duilib XML属性大全-Duilib XML样式大全
  8. 软件架构-解密电商系统-互联网BAT商品详情缓存架构
  9. 使用国内docker 镜像仓库
  10. ubuntu18添加中文输入法