P5734 文字处理软件 C++题解
生活随笔
收集整理的這篇文章主要介紹了
P5734 文字处理软件 C++题解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接上題目
你需要開發一款文字處理軟件。最開始時輸入一個字符串(不超過 100 個字符)作為初始文檔??梢哉J為文檔開頭是第 0 個字符【這一句話還是很重要的,仔細閱讀】。需要支持以下操作:
-
1 str:后接插入,在文檔后面插入字符串 str,并輸出文檔的字符串。
-
2 a b:截取文檔部分,只保留文檔中從第 a 個字符起 b 個字符,并輸出文檔的字符串。
-
3 a str:插入片段,在文檔中第 a 個字符后面插入字符串 str,并輸出文檔的字符串。
-
4 str:查找子串,查找字符串 str 在文檔中最先的位置并輸出;如果找不到輸出 -1。
為了簡化問題,規定初始的文檔和每次操作中的 str 都不含有空格或換行【不含空格實在是太友好了】。最多會有 q(q\le100)q(q≤100) 次操作。
思路:
毫無疑問,這道題可以直接用C++的STL庫,非常方便就可以AC
但是作為小萌新的我有點記不太清楚STL庫的函數了,那么只好手搓了
上代碼:
#include <iostream> #include <string.h> using namespace std;int main() {char ch[10010]={0};int q,x,y;cin >> q;cin >> ch;for (int i = 0; i < q; i++){char ch1[10010]={0};int k=0;int z=0;int c=0;cin >> x;if (x==1){cin >> ch1;y = strlen(ch);for (int j = 0; ch1[j] != 0; j++, y++){ch[y] = ch1[j];}cout << ch << endl;continue;} else if (x==2){cin >> x >> y;k = x;for (int j = 0; j < y; j++,k++){ch[k-x] = ch[k];}for (int j = y; ch[j] != 0; j++){ch[j] = 0;}cout << ch << endl;continue;} else if (x==3){cin >> x;cin >> ch1;y = strlen(ch1);for (int j = x; ch[j] != 0; j++,y++){ch1[y] = ch[j];}for (int j = 0; ch1[j] != 0; j++,x++){ch[x] = ch1[j];}cout << ch << endl;continue;} else if (x==4){cin >> ch1;y = strlen(ch1);for (int j = 0; ch[j] != 0; j++){if (ch[j] == ch1[0]){k = j;z = 0;c = j;for (int p = 0; ch1[p] != 0; p++,c++){if (ch[c] == ch1[p])continue;else {z = 1;break; }}if (z == 0){cout << k << endl;goto leave;}}}cout << -1 << endl;leave: continue;}}return 0; }最后:
該函數還可以使用四個子函數,這樣也方便在出現WA的時候,對代碼進行修改
歡迎大家在討論區討論
總結
以上是生活随笔為你收集整理的P5734 文字处理软件 C++题解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20220707拖把更名器的正则表达式的
- 下一篇: C/C++开发中大小驼峰命名规则