If you are given the sentence “you shall not pass” and tasked with reversing the sentence’s word order; then the sentence becomes “pass not shall you”.
Consider the following illustration, which highlights one possible solution to this problem:
One interesting thing about this problem is that all of its solutions are very language-dependent. Consider the implementations shown below:
The following is an implementation of the method described above:
#include <iostream> #include <algorithm> using namespace std; int main() { string str = "you shall not pass"; cout << "Original string: " << str << endl; // Use the built-in reverse to get char-by-char reversal. reverse(str.begin(), str.end()); string buffer = ""; string ans = ""; // This for loop then reverses each individual // word in the string. for (int i=0; i < str.length(); i++) { if (str[i] != ' ') { buffer += str[i]; } else { reverse(buffer.begin(), buffer.end()); ans += buffer + " "; buffer = ""; } } // Reversing the last word in the string outside the loop: reverse(buffer.begin(), buffer.end()); ans += buffer; cout << "Reversed string: " << ans << endl; }
Python has built-in functions to split the string, reverse the order of its words, and then join the words again. This implementation is shown below:
string = 'you shall not pass' split_str = string.split(' ') # split on spaces reversed_str = reversed(split_str) # reverse words final_str = ' '.join(reversed_str) # join the reversed words back to string print("Reversed string: " , final_str)
The solution in Java uses a built-in split
function that is followed by the string being saved in reverse:
class ReverseWords { public static void main(String args[]) { String s[] = "you shall not pass".split(" "); String ans = ""; for (int i = s.length - 1; i >= 0; i--) { ans += s[i] + " "; } System.out.println("Reversed String: " + ans); } }
RELATED TAGS
View all Courses