L1-094 剪切粘贴 - 团体程序设计天梯赛-练习集 (pintia.cn)
一开始没注意t1,t2是连续的,以为是分开的也可以,然后要替换他们之间的字符,想复杂了
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
signed main()
{
string s;
cin>>s;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int a,b;
string t1,t2;
cin>>a>>b>>t1>>t2;
string tt=s.substr(a-1,b-a+1);//剪切段
s.erase(a-1,b-a+1);//剪切后剩余段
string t3=t1+t2;
int index=s.find(t3);//寻找相同可插入连续字符段
if(index==-1) s=s+tt;//没找到就接到后面去
else
{
s.insert(index+t1.size(),tt);//将剪切段插入
}
}
cout<<s<<endl;
}