题目给出了剪辑字符串的位置,随后是粘贴位置的前字符和后字符,那么我们的目标就是:
①“拷贝”删除的字符串
②找到前、后字符
解决问题①:运用string库中的拷贝函数(substr),以及删除(erase)函数.
解决问题②:题目给出的条件是找到前字符串是s1,后字符串是s2的位置插入拷贝的字符串,如果我们运用模拟的方法找,会很麻烦,巧妙的是我们可以直接找到s1+s2的字符串,就不用模拟模拟模拟了.
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
string s;
cin>>s;
int n;
cin>>n;
int a,b;
string s1,s2;
while(n--)
{
cin>>a>>b;
string c1=s.substr(a-1,b-a+1);
cin>>s1>>s2;
string c2=s1+s2;
s.erase(a-1,b-a+1);
int pos1=s.find(c2);
if(pos1!=-1)
s.insert(pos1+s1.length(),c1);
else
s+=c1;
}
cout<<s<<endl;
return 0;
}