预备知识
coding
day8
void reverseString(vector<char>& s) {
for(int index = 0; index < s.size() /2; ++index){
char tmp = s[s.size() - 1 - index];
s[s.size() - 1 - index] = s[index];
s[index] = tmp;
}
}
void reverse(std::string& input, int left, int right){
while(left < right){
std::swap(input[left], input[right]);
left++;
right--;
}
}
string reverseStr(string s, int k) {
int left = 0;
std::string ret = s;
for(int index = 0; index < s.size(); index += 2*k){
reverse(ret, index, (s.size()-1 < index + k - 1 ? s.size()-1 : index + k - 1));
}
return ret;
}
void Rebuild(std::string& input){
size_t num = 0;
for(char c : input){
if(c >= '0' && c <= '9'){
++num;
}
}
int index = input.size();
input.resize(input.size() + (sizeof("number") - 2) * num);
int pos = input.size();
for(index = index -1; index >=0; --index){
if(input[index] >='0' && input[index] <= '9'){
input[--pos] = 'r';
input[--pos] = 'e';
input[--pos] = 'b';
input[--pos] = 'm';
input[--pos] = 'u';
input[--pos] = 'n';
}else{
input[--pos] = input[index];
}
}
}
void reverse(std::string& input, int left, int right){
while(left < right){
std::swap(input[left], input[right]);
left++;
right--;
}
}
string reverseWords(string s) {
// 完全反转
reverse(s, 0, s.size()-1);
// 遍历
int pos = 0; // 记录末尾位置
for(int index = 0; index < s.size(); ++index){
if(s[index] == ' '){
;
}else{
// 拷贝内容
if(pos != 0){
s[pos++] = ' ';
}
// 拷贝一个单词
int cur = index;
while(cur < s.size() && s[cur] != ' '){
s[pos++] = s[cur++];
}
// 反转这个单词
reverse(s, pos - (cur - index), pos -1);
// 更新index到找到的单词后一位
index = cur;
}
}
// 删除多余字符
return std::string(s.begin(), s.begin()+pos);
}
#include <iostream>
#include <string>
#include <algorithm>
int main(){
std::string input;
int pos;
std::cin >> pos;
std::cin >> input;
std::reverse(input.begin(),input.end());
std::reverse(input.begin(),input.begin() + pos);
std::reverse(input.begin() + pos, input.end());
std::cout << input << std::endl;
return 0;
}