题目描述:
给出主串、模式串、替换串,用KMP算法找出模式串在主串的位置,然后用替换串的字符替换掉模式串
本题只考虑一处替换的情况,如果你想做的完美一些,能够实现多处替换那
可能需要考虑模式串和替换串长度不一致的情况
输入:
第一个输入t,表示有t个实例
第二行输入第1个实例的主串,第三行输入第1个实例的模式串,第四行输入第1个实例的替换串
以此类推
输出:
第一行输出第1个实例的主串
第二行输出第1个实例的主串替换后结果,如果没有发生替换就输出主串原来的内容。
以此类推
思路:
在此我使用了插入函数insert()与删除函数erase();我先使用find()函数查出需要替换的位置,然后使用插入函数插入,最后再使用删除函数删除就得到输出样例(如果先删除再插入就找不到串所需要替换的位置,很不方便进行下一步操作)
随后附上我的代码:
#include <iostream>
#include<string>
using namespace std;
int main()
{
int n;
string s1, s2, s3;
cin >> n;
while (n--) {
cin >> s1 >> s2 >> s3;
cout << s1 << endl;
if (s1.find(s2) != string::npos) {
s1.insert(s1.find(s2) + s2.length(), s3);
s1.erase(s1.find(s2), s2.length());
cout << s1 << endl;
}
else {
cout << s1 << endl;
}
}
}
如有错误或者有更好的提议,欢迎大家指出0.o0.o0.o。