L1-094 剪下貼上

YuKiCheng發表於2024-04-02

這個題目是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

相關文章