#include <string>
#include <iostream>
using namespace std;
string reverse_helper(string& s,int length,int start=0){
if (start>=length){
return s;
}
else{
char temp=s[length];
s[length]=s[start];
s[start]=temp;
reverse_helper(s,--length,++start);
}return s;
}
string reverse(string str, int length, int start=0)
{
return reverse_helper(str, length, start);
}
int main(void) {
string a = "This is a long string";
cout<<reverse(a,a.length()-1,0) << "\n";
cout << "original string: " << a;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHJldmVyc2VfaGVscGVyKHN0cmluZyYgcyxpbnQgbGVuZ3RoLGludCBzdGFydD0wKXsKCiAgICBpZiAoc3RhcnQ+PWxlbmd0aCl7CiAgICAgICAgcmV0dXJuIHM7CiAgICB9CiAgICBlbHNlewogICAgICAgIGNoYXIgdGVtcD1zW2xlbmd0aF07CiAgICAgICAgc1tsZW5ndGhdPXNbc3RhcnRdOwogICAgICAgIHNbc3RhcnRdPXRlbXA7CiAgICAgICAgcmV2ZXJzZV9oZWxwZXIocywtLWxlbmd0aCwrK3N0YXJ0KTsKICAgIH1yZXR1cm4gczsKfQoKc3RyaW5nIHJldmVyc2Uoc3RyaW5nIHN0ciwgaW50IGxlbmd0aCwgaW50IHN0YXJ0PTApCnsKICAgIHJldHVybiByZXZlcnNlX2hlbHBlcihzdHIsIGxlbmd0aCwgc3RhcnQpOwp9CgppbnQgbWFpbih2b2lkKSB7CgogICAgc3RyaW5nIGEgPSAiVGhpcyBpcyBhIGxvbmcgc3RyaW5nIjsKICAgIGNvdXQ8PHJldmVyc2UoYSxhLmxlbmd0aCgpLTEsMCkgPDwgIlxuIjsKICAgIGNvdXQgPDwgIm9yaWdpbmFsIHN0cmluZzogIiA8PCBhOwp9