#include <bits/stdc++.h>
using namespace std;
int iterations; // Number of iteration that the code will run
string sentence; //The sentece that you want to reverse
void reverse ( int start, int end)
{
for ( int i = start, k = 0; k <= ((end-start)/2); i++, k++ ) {
//swap( sentence[i], sentence[end-i] );
/* This is a swap */
char keep = sentence[i];
sentence[i] = sentence[(end-k)];
sentence[(end-k)] = keep;
iterations++;
}
}
//4 - 7 time 7 - 4 = 3/2 = 1
int main() {
sentence = "Run Time Analysis";
string origin = sentence;
int len = sentence.length(), start = 0, end = 0;
iterations = 0; //Starts from 0
for ( int i = 0; i < len; i++ ) {
if ( sentence[i] == ' ' || i == (len-1)) {
i = (i==len-1) ? (i+1) : i;
end = i-1;
reverse( start, end );
start = i+1;
}
iterations++;
}
cout << "Orginal sentence: " << origin << "\nResult: " << sentence << "\nLength of the sentence: " << len << "\nNumber of iterations: " << iterations << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgaXRlcmF0aW9uczsgLy8gTnVtYmVyIG9mIGl0ZXJhdGlvbiB0aGF0IHRoZSBjb2RlIHdpbGwgcnVuCnN0cmluZyBzZW50ZW5jZTsgLy9UaGUgc2VudGVjZSB0aGF0IHlvdSB3YW50IHRvIHJldmVyc2UKCnZvaWQgcmV2ZXJzZSAoIGludCBzdGFydCwgaW50IGVuZCkgCnsKCWZvciAoIGludCBpID0gc3RhcnQsIGsgPSAwOyBrIDw9ICgoZW5kLXN0YXJ0KS8yKTsgaSsrLCBrKysgKSB7CgkJLy9zd2FwKCBzZW50ZW5jZVtpXSwgc2VudGVuY2VbZW5kLWldICk7CgkJLyogVGhpcyBpcyBhIHN3YXAgKi8KCQljaGFyIGtlZXAgPSBzZW50ZW5jZVtpXTsKCQlzZW50ZW5jZVtpXSA9IHNlbnRlbmNlWyhlbmQtayldOwoJCXNlbnRlbmNlWyhlbmQtayldID0ga2VlcDsKCQlpdGVyYXRpb25zKys7Cgl9Cgp9CiAvLzQgLSA3IHRpbWUgNyAtIDQgPSAzLzIgPSAxIAppbnQgbWFpbigpIHsKCQoJc2VudGVuY2UgPSAiUnVuIFRpbWUgQW5hbHlzaXMiOwoJc3RyaW5nIG9yaWdpbiA9IHNlbnRlbmNlOwoJaW50IGxlbiA9IHNlbnRlbmNlLmxlbmd0aCgpLCBzdGFydCA9IDAsIGVuZCA9IDA7CgkKCWl0ZXJhdGlvbnMgPSAwOyAvL1N0YXJ0cyBmcm9tIDAKCQoJZm9yICggaW50IGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CgkJaWYgKCBzZW50ZW5jZVtpXSA9PSAnICcgIHx8IGkgPT0gKGxlbi0xKSkgewoJCQlpID0gKGk9PWxlbi0xKSA/IChpKzEpIDogaTsKCQkJZW5kID0gaS0xOwoJCQlyZXZlcnNlKCBzdGFydCwgZW5kICk7CQoJCQlzdGFydCA9IGkrMTsKCQl9CgkJaXRlcmF0aW9ucysrOwoJfQoJY291dCAgPDwgIk9yZ2luYWwgc2VudGVuY2U6ICIgPDwgb3JpZ2luIDw8ICJcblJlc3VsdDogIiA8PCBzZW50ZW5jZSA8PCAiXG5MZW5ndGggb2YgdGhlIHNlbnRlbmNlOiAiIDw8IGxlbiA8PCAiXG5OdW1iZXIgb2YgaXRlcmF0aW9uczogIiA8PCBpdGVyYXRpb25zIDw8ICJcbiI7CglyZXR1cm4gMDsKfQ==