九度OJ1111题-单词替换
题目1111:单词替换
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6752
解决:1891
- 题目描述:
-
输入一个字符串,以回车结束(字符串长度<=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
- You want someone to help you
- 样例输出:
-
- I want someone to help you
- 来源:
- 2007年北京大学计算机研究生机试真题
- 代码:
-
- #include <iostream>
- #include <stdio.h>
- #include <string>
- #include <ctype.h>
- using namespace std;
- int main() {
- char stra[];
- while(gets(stra)){
- string a = stra;
- char strb[];
- char strc[];
- gets(strb); gets(strc);
- string b = strb; string c = strc;
- int pos = a.find(b, );
- while(pos != string::npos) {
- if ((a[pos-] == ' ' || pos == ) && (a[pos + b.size()] == ' ') || a[pos + b.size()] == ){
- a.erase(pos, b.size());
- a.insert(pos, c);
- pos = a.find(b, pos);
- }
- else{
- pos = a.find(b, pos + b.size());
- }
- }
- cout << a << endl;
- }
- return ;
- }
一开始没有写 if ((a[pos-1] == ' ' || pos == 0) && (a[pos + b.size()] == ' ') || a[pos + b.size()] == 0){
这一行,导致一直是WA还不知道为什么
应该是表示必须是“单词替换”,所以被替换的地方前后都要有空格
或者是开头(pos == 0)和结尾( a[pos + b.size()] == 0)
对于 a[pos + b.size()] == 0要解释一下:
因为是
char stra[201];
string a = stra;
所以在stra中没有内容的部分默认是0,拷贝给a的都是有内容的部分,而string类型对于超出边界的下标指向的字符,填充的正好也是0
所以 a[pos + b.size()] == 0表示超出了单词长度,也就是被替换的是最后一个单词(如果被替换了最后两个单词呢?这样两个单词中间就有空格了!?)
其实这道题出的不好,并没有说明白必须都是单词,如果是单词中的某个字符是不允许被替换的,所以要加限制条件
- #include <iostream>
九度OJ1111题-单词替换的更多相关文章
- 剑指Offer - 九度1361 - 翻转单词顺序
剑指Offer - 九度1361 - 翻转单词顺序2013-11-23 02:45 题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fi ...
- 九度OJ1450题-产生冠军-MAP的使用
题目1450:产生冠军 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2839 解决:1161 题目描述: 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛.球赛的规则如 ...
- 九度OJ1122题-吃巧克力
题目1122:吃糖果 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2453 解决:1957 题目描述: 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力 ...
- 九度OJ1451题-信封错装
题目1451:不容易系列之一 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2004 解决:1210 题目描述: 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“ ...
- 九度OJ1205题-递归求解问题
题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:5887 解决:2446 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用 ...
- 九度OJ1049题-去特定字符(和1111题特别像)
题目1049:字符串去特定字符 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:11329 解决:5169 题目描述: 输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果. 输入: ...
- 九度oj1163题
题目描述: 输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1. 输入: 输入有多组数据. 每组一行,输入n. ...
- 九度OJ 1111:单词替换 (查找)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4473 解决:1268 题目描述: 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔 ...
- 九度oj 题目1111:单词替换
题目描述: 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符 ...
随机推荐
- hashlib 库
hashlib 库 hash 是一种算法,用来接收一系列数据,经过计算后得到一个hash值 hash值的三大特征: 1. 如果传入的数据一样,得到的hash值一样 2. 只要采用的hash算法固定,无 ...
- sql中,如何获取一个数的整数部分和余数部分
我们测试一下,我要得到的结果是多少周(整数),多少天(余数) 1.获取指定日期到当前日期之间的天数 首先用DATEDIFF() 函数获取指定日期到当前日期的天数 --获取指定日期到当前日期的天数 se ...
- python两个字典合并,两个list合并
1.两个字典:a={'a':1,'b':2,'c':3} b= {'aa':11,'bb':22,'cc':33} 合并1:dict(a,**b) 操作如下: 合并2:dict(a.items()+ ...
- linux下/proc/diskstats文件详解
每一列的含义分别为: 第一列为 设备号 (number of issued reads. This is the total number of reads completed successfull ...
- 4.3 if-else语句使用
Q:对输入的成绩进行登记划分. #include<iostream> #include<cstdio> using namespace std; int main() { in ...
- 生产者与消费者问题,C++利用bind基于对象实现与面向对象实现
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- VSTO:使用C#开发Excel、Word【3】
<Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath >——By Eric C ...
- Java基础-流程控制语句与运算符
运算符 算术运算符 ++ -- 在前时先运算后取值:在后时先取值后运算 关系运算符 == !=也可以是引用类型 位运算符 逻辑运算符 赋值运算符 条件运算符 (?:) 布尔表达式 ? 表达式1 : 表 ...
- sac cut
Put a perl script here in order to remind myself of its correct usage:
- 漫步Java------初识java
一. Java语言概述 语言:是人与人之间用于沟通的一种方式. 例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语. 计算机语言(编程语言): 人与计算机交流的方式.如果人要与计算 ...