您的位置:首页 > 其它

九度oj 1111

2015-08-11 11:22 281 查看
题目描述:

输入一个字符串,以回车结束(字符串长度<=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

来源:
2007年北京大学计算机研究生机试真题
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char str[100];
char sta[100];
char stb[100];
while(gets(str))
{
string s=str;
gets(sta);
gets(stb);
string a=sta;
string b=stb;
int t=s.find(a,0);
while(t!=string::npos)
{
if(t==0&&(s[t+a.size()]==' '||s[t+a.size()]=='\0'))
{
s=s.replace(t,a.size(),b,0,b.size());
t=s.find(a,t+1);
continue;
}
else
{
if(s[t-1]==' '&&(s[t+a.size()]=='\0'||s[t+a.size()]==' '))
{
s=s.replace(t,a.size(),b,0,b.size());
t=s.find(a,t+1);
}
else
{
t=s.find(a,t+1);
continue;}
}
}
cout<<s<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: