#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void reverse(string& word)
{
unsigned int end = word.size() - 1;
for ( unsigned int i = 0; i < end; i++, end-- )
{
char c = word[end];
word[end] = word[i];
word[i] = c;
}
}
void reverse_rec( string& word )
{
if ( word.size() <= 1 ) return;
string tmp = word.substr( 1, word.size() - 2 );
reverse_rec( tmp );
word = word.substr( word.size() - 1 ) + tmp + word[0];
}
int main()
{
string str( "This is a test");
reverse(str);
std::cout << str << std::endl;
reverse_rec(str);
std::cout << str << std::endl;
std::reverse(str.begin(), str.end());
std::cout << str << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdm9pZCByZXZlcnNlKHN0cmluZyYgd29yZCkgIAp7CiAgICB1bnNpZ25lZCBpbnQgZW5kID0gd29yZC5zaXplKCkgLSAxOwogICAgZm9yICggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZW5kOyBpKyssIGVuZC0tICkKICAgIHsKICAgICAgICBjaGFyIGMgPSB3b3JkW2VuZF07CiAgICAgICAgd29yZFtlbmRdID0gd29yZFtpXTsKICAgICAgICB3b3JkW2ldID0gYzsKICAgIH0KfQoKdm9pZCByZXZlcnNlX3JlYyggc3RyaW5nJiB3b3JkICkKewogICAgaWYgKCB3b3JkLnNpemUoKSA8PSAxICkgcmV0dXJuOwoKICAgIHN0cmluZyB0bXAgPSB3b3JkLnN1YnN0ciggMSwgd29yZC5zaXplKCkgLSAyICk7CiAgICByZXZlcnNlX3JlYyggdG1wICk7CiAgICB3b3JkID0gd29yZC5zdWJzdHIoIHdvcmQuc2l6ZSgpIC0gMSApICsgdG1wICsgd29yZFswXTsKfQogCmludCBtYWluKCkKewogICAgc3RyaW5nIHN0ciggIlRoaXMgaXMgYSB0ZXN0Iik7CiAgICByZXZlcnNlKHN0cik7CiAgICBzdGQ6OmNvdXQgPDwgc3RyIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXZlcnNlX3JlYyhzdHIpOwogICAgc3RkOjpjb3V0IDw8IHN0ciA8PCBzdGQ6OmVuZGw7CgogICAgc3RkOjpyZXZlcnNlKHN0ci5iZWdpbigpLCBzdHIuZW5kKCkpOwogICAgc3RkOjpjb3V0IDw8IHN0ciA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQ==