我怀疑这是你们见过最奇怪的解法
题目描述
输入一个字符串,以回车结束(字符串长度不超过 100
)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式
输入共 3
行。
第 1
行是包含多个单词的字符串 s
;
第 2
行是待替换的单词 a
(长度不超过 100
);
第 3
行是 a
将被替换的单词 b
(长度不超过 100
)。
输出格式
共一行,输出将 s
中所有单词 a
替换成 b
之后的字符串。
输入样例:
You want someone to help you
You
I
输出样例:
I want someone to help you
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s,a,b;
getline(cin,s);
getline(cin,a);
getline(cin,b);
for(int i = 0;i < (int)s.size();i++){
if(a[0] == s[i]){
int cnt = 0;
for(int i2 = 0;i2 < (int)a.size();i2++){
if(a[i2] == s[i2 + i])
{
cnt++;
}
if(cnt == (int)a.size() & (s[i2 + i + 1 ] == ' ' | s[i2 + i + 1] == '\0') & (s[i - 1] == ' ' | s[i - 1] == '\0'))
{
cout << b;
i += a.size();
}
}
}
cout << s[i];
}
}