【id:53】【20分】D. DS串应用--串替换(运用两个函数快速解决)

题目描述:

给出主串、模式串、替换串,用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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值