题目描述
主要是输入流和string的成员函数使用
样例
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string str;
string line, t;
int m;
cin >> str >> m ;
cin.ignore();
//需要注意的是,在使用std::cin和std::getline()函数时,应该先使用std::cin.ignore()清除输入缓存
//因为第一个cin的缓存中可能会包含一个换行符
while (m--)
{
getline(cin, line);
stringstream ss(line);
string option;
ss >> option;
if (option == "COPY")
{
string idx_s1, idx_s2;//COPY指令有两个下标
ss >> idx_s1 >> idx_s2;
int idx_i1 = stoi(idx_s1);
int idx_i2 = stoi(idx_s2);
t = str.substr(idx_i1, idx_i2 - idx_i1 + 1);
}
else if (option == "CUT")
{
string idx_s1, idx_s2;//CUT指令有两个下标
ss >> idx_s1 >> idx_s2;
int idx_i1 = stoi(idx_s1);
int idx_i2 = stoi(idx_s2);
t = str.substr(idx_i1, idx_i2 - idx_i1 + 1);//str.substr(起始位置,长度)
str.erase(idx_i1, idx_i2 - idx_i1 + 1);//str.erase(起始位置,长度)
}
else if (option == "PASTE")
{
string idx_s1;//PASTE指令只有一个下标
ss >> idx_s1;
int idx_i1 = stoi(idx_s1);
str.insert(idx_i1 + 1, t); //str.insert(位置,字符串),是插入在此位置的前面,若想在后面插入则+1
}
cout << str << endl;
}
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla