L1-094 剪切粘贴

发布时间:2026/6/22 16:33:32

L1-094 剪切粘贴 使用计算机进行文本编辑时常见的功能是剪切功能快捷键Ctrl X。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。工具需要完成一系列剪切后粘贴的操作每次操作分为两步剪切给定需操作的起始位置和结束位置将当前字符串中起始位置到结束位置部分的字符串放入剪贴板中并删除当前字符串对应位置的内容。例如当前字符串为abcdefg起始位置为 3结束位置为 5则剪贴操作后 剪贴板内容为cde操作后字符串变为abfg。字符串位置从 1 开始编号。粘贴给定插入位置的前后字符串寻找到插入位置将剪贴板内容插入到位置中并清除剪贴板内容。例如对于上面操作后的结果给定插入位置前为bf插入位置后为g则插入后变为abfcdeg。如找不到应该插入的位置则直接将插入位置设置为字符串最后仍然完成插入操作。查找字符串时区分大小写。每次操作后的字符串即为新的当前字符串。在若干次操作后请给出最后的编辑结果。输入格式:输入第一行是一个长度小于等于 200 的字符串 S表示原始字符串。字符串只包含所有可见 ASCII 字符不包含回车与空格。第二行是一个正整数 N (1≤N≤100)表示要进行的操作次数。接下来的 N 行每行是两个数字和两个长度不大于 5的不包含空格的非空字符串前两个数字表示需要剪切的位置后两个字符串表示插入位置前和后的字符串用一个空格隔开。如果有多个可插入的位置选择最靠近当前操作字符串开头的一个。剪切的位置保证总是合法的。输出格式:输出一行表示操作后的字符串。输入样例:AcrosstheGreatWall,wecanreacheverycornerintheworld510 18 ery cor32 40 , we1 6 tW all14 18 rnerr eache1 1 e r输出样例:he,allcornetrrwecaneacheveryGreatWintheworldAcross题解# includebits/stdc.h using namespace std; string s, fr, ba; int n, st, ed; int main() { getline(cin, s); cin n; while(n --) { cin st ed fr ba; string word s.substr(st - 1, ed - st 1); s.erase(st - 1, ed - st 1); string pw fr ba; int pos s.find(pw); if (pos -1) s word; else s.insert(pos fr.size(), word); } cout s endl; return 0; }

相关新闻