【九度OJ】题目1111:单词替换
题目1111:单词替换
- 题目描述:
-
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
- 输入:
-
多组数据。每组数据输入包括3行,第1行是包含多个单词的字符串 s,第2行是待替换的单词a,(长度<=100)第3行是a将被替换的单词b。(长度<=100)s, a, b 最前面和最后面都没有空格.
- 输出:
-
每个测试数据输出只有 1 行,将s中所有单词a替换成b之后的字符串。
- 样例输入:
-
You want someone to help you
You
I
- 样例输出:
-
I want someone to help you
#include <iostream>
#include <string>
using namespace std; int main()
{
string s, a, b;
while(getline(cin, s))
{
getline(cin, a);
getline(cin, b); for(int i = ; i < s.length(); i++)
{
if(s.length() - i >= a.length())
{
if(s.substr(i, a.length()) == a
&& (i == || s[i - ] == ' ')
&& (i == s.length() - a.length() || s[i + a.length()] == ' '))
{
s.replace(i, a.length(), b);
}
}
else
break;
}
cout << s << endl;
}
return ;
}
/**************************************************************
Problem: 1111
User: 文剑木然
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
【总结】
对于C++中的字符串操作还比较陌生,代码写得比较繁琐。
主要注意要点:
1、cin >> s 会将空格作为输入结束,所以要用getline(cin, s)。
getline还有一些细节上的问题需要注意。
2、要注意判断单词边界
之前的错误答案:
#include <iostream>
#include <string>
using namespace std; int main()
{
string s, a, b;
while(getline(cin, s))
{
getline(cin, a);
getline(cin, b);
if(s.length() >= a.length())
{
for(int i = ; i <= s.length() - a.length(); i++)
{
if(s.substr(i, a.length()) == a
&& (i == || ' ' == s[i - ])
&& (i == s.length() - a.length() || ' ' == s[i + a.length()]))
{
s.replace(i, a.length(), b);
}
}
}
cout << s << endl;
}
return ;
}
/**************************************************************
Problem: 1111
User: 文剑木然
Language: C++
Result: Runtime Error
****************************************************************/
【错误分析】
当输入为
you
you
i
时,会发生错误。
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr: __pos (which is ) > this->size() (which is )
因为,执行替换后,循环终止条件
i <= s.length() - a.length()
恒满足,也就是i的值将不断增加,然后导致越界。
【九度OJ】题目1111:单词替换的更多相关文章
- 九度oj 题目1111:单词替换
题目描述: 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
- 九度OJ题目1003:A+B
while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...
随机推荐
- Android 学习 (一)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- 初学c# -- 学习笔记(五) winfrom自定义滚动条
找了些例子,要么庞大.要么搞个安装组件什么的,我要求能用就行了.实在找例子修改麻烦,就做了一个.其实实现挺简单,就是panel或图片什么的跟着鼠标走就行了. 这里panel自己可以加背景图或直接搞个图 ...
- JSP开发模式1(简单注册功能)
———————————————————————————————————————————————— import java.util.regex.Matcher;import java.util.reg ...
- mysql workbench
下载地址:http://dev.mysql.com/downloads/ 详情:http://baike.baidu.com/link?url=sWV3b2pWdr8cvCxEZYrB9CzLD9Bl ...
- jq 部分用法
这几天一直在写前台,因为jq是在客服端处理数据的,所以公司,一般都用这种方法,下面是我这几天用到的一些东西 1.修改table表格的第一轮显示值 function changeTableRowValu ...
- RIDE安装遇到的问题及解决方法
1.按照虫师的方法,下载的wxpython3.0 ,启动robotframework-ride,无效,因为版本不一致,所以我又根据终端提示的网址:http://sourceforge.net/proj ...
- VLC嵌入网页,终于要成功了!
<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" width="640" heig ...
- 去除inline-block元素间间距的N种方法
这篇文章发布于 2012年04月24日,星期二,22:38,归类于 css相关. 阅读 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxin ...
- java中的static使用--静态变量、静态方法
Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...
- 去空格 whitespaceAndNewlineCharacterSet和过滤字符串
一.过滤字符串 可以使用stringByTrimmingCharactersInSet函数过滤字符串中的特殊符号 首先自己定义一个NSCharacterSet, 包含需要去除的特殊符号 NSChara ...