1962:单词替换

问题 D: 单词替换

时间限制: 1 Sec  内存限制: 32 MB
提交: 406  解决: 138
[提交][状态][讨论版][命题人:外部导入]

题目描述

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入

多组数据。每组数据输入包括3行,

第1行是包含多个单词的字符串 s,

第2行是待替换的单词a,(长度<=100)

第3行是a将被替换的单词b。(长度<=100)

s, a, b 最前面和最后面都没有空格。

输出

每个测试数据输出只有 1 行,

将s中所有单词a替换成b之后的字符串。

样例输入

I love Tian Qin
I
You

样例输出

You love Tian Qin
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string s;
	while (getline(cin, s)) {
		string a, b;
		int x[100], num = 0;
		getline(cin, a);
		getline(cin, b);
		int len = a.length();
		if (len > s.length()) {
			cout << s << endl;
			continue;
		}
		for (int i = 0; i <= s.length() - len; i++) {
			bool flag = true;
			for (int j = i; j < i + len; j++) {
				if (s[j] != a[j - i]) {
					flag = false;
				}
			}
			if (flag) {
				x[num++] = i;
			}
		}
		for (int i = 0; i < s.length(); i++) {
			bool flag = false;
			for (int j = 0; j < num; j++) {
				if (i == x[j]) {
					flag = true;
				}
			}
			if (flag) { 
				cout << b;
				i += len - 1;
			}
			else cout << s[i];
		}
		cout << endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36502291/article/details/82215653