问题大概是 输入一个数字和一串字符串,前2k个反转前k个字符,最后的不满k全返,小于2k大于k反转前k;
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
void myreverse(string& inputs, int k) {
int len = inputs.size();
int a = len / (2 * k);//整数组
//cout << "a=" << a << endl;
int b = len - 2 * a * k;//剩余个数
//cout << "b=" << b << endl;
vector<char>vinputs;
for (int i = 0; i < inputs.length(); i++) {
vinputs.push_back(inputs[i]);
}//输入
for (int i = 0; i < a; i++) {
reverse(vinputs.begin() + 2 * k * i, vinputs.begin() + 2 * k * i + k);
cout << i<<endl;
}
if (b<2 * k && b>=k) {
reverse(vinputs.begin() + 2 * k * a, vinputs.begin() + 2 * k * a+k);
}
else if (b < k) {
reverse(vinputs.begin() + 2 * k * a, vinputs.end());
}
for (int i = 0; i < inputs.length(); i++) {
cout << vinputs.at(i);
}
cout << endl;
}
int main() {
int k;
string inputs;
cin >> inputs;
cin >> k;
myreverse(inputs, k);
return 0;
}