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

1.题目介绍

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

题目描述

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

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

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

输入格式

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

第二行输入一个字符串 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

提示

数据保证,1q100,开始的字符串长度 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 @   DawnTraveler  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示