#include <iostream>
#include <string>
using namespace std;
void ReverseString(string &S, int start, int end)
{
if ( start < end )
{
swap(S[start], S[end - 1]);
ReverseString(S, start+1, end - 1);
}
}
void ReverseString(string &S)
{
ReverseString(S, 0, S.size());
}
int main()
{
string s = "The string to reverse" ;
cout << "Before Reversing" << endl;
cout << s << endl;
ReverseString(s);
cout << "After Reversing" << endl;
cout << s << endl;
ReverseString(s, 0, 7);
cout << "After Reversing a subset" << endl;
cout << s << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgUmV2ZXJzZVN0cmluZyhzdHJpbmcgJlMsIGludCBzdGFydCwgaW50IGVuZCkKewogICBpZiAoIHN0YXJ0IDwgZW5kICkKICAgewogICAgICBzd2FwKFNbc3RhcnRdLCBTW2VuZCAtIDFdKTsKICAgICAgUmV2ZXJzZVN0cmluZyhTLCBzdGFydCsxLCBlbmQgLSAxKTsKICAgfQp9Cgp2b2lkIFJldmVyc2VTdHJpbmcoc3RyaW5nICZTKQp7CiAgIFJldmVyc2VTdHJpbmcoUywgMCwgUy5zaXplKCkpOwp9CgppbnQgbWFpbigpCnsKICAgIHN0cmluZyBzID0gIlRoZSBzdHJpbmcgdG8gcmV2ZXJzZSIgOwoKICAgIGNvdXQgPDwgIkJlZm9yZSBSZXZlcnNpbmciIDw8IGVuZGw7CiAgICBjb3V0IDw8IHMgPDwgZW5kbDsKCiAgICBSZXZlcnNlU3RyaW5nKHMpOwogICAgY291dCA8PCAiQWZ0ZXIgUmV2ZXJzaW5nIiA8PCBlbmRsOwogICAgY291dCA8PCBzIDw8IGVuZGw7CgogICAgUmV2ZXJzZVN0cmluZyhzLCAwLCA3KTsKICAgIGNvdXQgPDwgIkFmdGVyIFJldmVyc2luZyBhIHN1YnNldCIgPDwgZW5kbDsKICAgIGNvdXQgPDwgcyA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K