怎么回事呢??
查看原帖
怎么回事呢??
854995
flyWang楼主2023/9/10 18:45
//四个WA的,只有最后一个通过,真看不出哪里有问题

#include<bits/stdc++.h>
using namespace std;
int main() {
	int q;
	string s;
	cin >> q >> s;
	getchar();
	getchar();
	vector<string>vec(q);
	string temp;
	int record,start,size,pos;
	for (int i = 0; i < q; i++) getline(cin, vec[i]);
	for (int i = 0; i < q; i++) {
		if (vec[i][0] == '1') {
			for (int j = 2; j < vec[i].size(); j++) s += vec[i][j];
			cout << s << endl;
		}
		else if (vec[i][0] == '2') {
			temp.clear();
			for (int j = 2; j < vec[i].size() && isdigit(vec[i][j]); j++) { temp += vec[i][j]; record = j; }
			//这就拿到第一个数字了
			start = stoi(temp);
			temp.clear();
			for (int j = record + 2; j < vec[i].size(); j++)  temp += vec[i][j];
			size = stoi(temp);
			//这样就可以拿到第二个数字了
			s = s.substr(start, size);
			cout << s << endl;
		}
		else if (vec[i][0] == '3') {
			temp.clear();
			for (int j = 2; j < vec[i].size() && isdigit(vec[i][j]); j++) { temp += vec[i][j]; record = j; }
			//这就拿到第一个数字了
			start = stoi(temp);
			temp.clear();
			for (int j = record + 2; j < vec[i].size(); j++)  temp += vec[i][j];
			s.insert(start, temp);
			cout << s << endl;
		}
		else{
				  temp.clear();
				  for (int j = 2; j < vec[i].size(); j++)  temp += vec[i][j];
				  pos = s.find(temp);
				  if (pos < s.size()) cout << pos << endl;
				  else cout << -1 << endl;
		}
	}
	return 0;
}
2023/9/10 18:45
加载中...