P5734 【深基6.例6】文字处理软件

1.题目介绍

【深基6.例6】文字处理软件

题目描述

你需要开发一款文字处理软件。最开始时输入一个字符串作为初始文档。可以认为文档开头是第 \(0\) 个字符。需要支持以下操作:

  • 1 str:后接插入,在文档后面插入字符串 \(\texttt{str}\),并输出文档的字符串;
  • 2 a b:截取文档部分,只保留文档中从第 \(a\) 个字符起 \(b\) 个字符,并输出文档的字符串;
  • 3 a str:插入片段,在文档中第 \(a\) 个字符前面插入字符串 \(\texttt{str}\),并输出文档的字符串;
  • 4 str:查找子串,查找字符串 \(\texttt{str}\) 在文档中最先的位置并输出;如果找不到输出 \(-1\)

为了简化问题,规定初始的文档和每次操作中的 \(\texttt{str}\) 都不含有空格或换行。最多会有 \(q\) 次操作。

输入格式

第一行输入一个正整数 \(q\),表示操作次数。

第二行输入一个字符串 \(\texttt{str}\),表示最开始的字符串。

第三行开始,往下 \(q\) 行,每行表示一个操作,操作如题目描述所示。

输出格式

一共输出 \(q\) 行。

对于每个操作 \(1,2,3\),根据操作的要求输出一个字符串。

对于操作 \(4\),根据操作的要求输出一个整数。

样例 #1

样例输入 #1

4
ILove
1 Luogu
2 5 5
3 3 guGugu
4 gu

样例输出 #1

ILoveLuogu
Luogu
LuoguGugugu
3

提示

数据保证,\(1 \leq q\le 100\),开始的字符串长度 \(\leq 100\)

2.题解

2.1 字符串处理函数

思路


代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int q;
	cin >> q;
	string str;
	cin >> str;
	
	int num;
	for(int i = 0; i < q; i++){
		cin >> num;
		switch(num){
			case 1:{
				string temp;
				cin >> temp;
				str += temp; // str.append(temp);
				cout << str << endl;
				break;
			}
			case 2:{
				int begin, n;
				cin >> begin >> n;
				str = str.substr(begin , n); 
				cout << str << endl;
				break;
			}
			case 3:{
				int begin;
				string temp;
				cin >> begin >> temp;
				str.insert(begin, temp);
				cout << str << endl;
				break;
			}
			case 4:{
				string a;
				cin >> a; 
				cout << (int)str.find(a) << endl;
				break;
			}
		}
	}
}
posted @ 2024-01-23 23:50  DawnTraveler  阅读(122)  评论(0编辑  收藏  举报