這個題目是stl的使用和字串拼接。
java裡頭substring是從首部到尾部的位置,但是C++裡面substr是首部位置,和要擷取的長度。
我算這種經常出錯,每次都搞得很暈。
#include <bits/stdc++.h>
using namespace std;
string cs;
int main() {
cin >> cs;
int cnt;
cin >> cnt;
while (cnt--) {
int c1, c2;
string s1, s2;
cin >> c1 >> c2 >> s1 >> s2;
string subs = cs.substr(c1 - 1, c2 - c1 + 1);//剪下的一段
cs = cs.substr(0, c1 - 1) + cs.substr(c2);//剪下之後剩下的字串拼在一起
string find = s1 + s2;//待插入的兩端
if (cs.find(find) != string::npos) {//找到第一個匹配位置
int pos = cs.find(find);
cs = cs.substr(0,pos+s1.size()) + subs + cs.substr(pos + s1.size());
}
else {//找不到拼接到最後
cs = cs + subs;
}
}
cout << cs << endl;
return 0;
}
這篇部落格寫法也可以:https://blog.csdn.net/m0_62531913/article/details/136774843