Java Reversing a String by Word or by Character

Java Reversing a String by Word or by Character


You wish to reverse a string, a character, or a word at a time.


You can reverse a string by character easily, using a StringBuilder. There are several ways to reverse a string a word at a time. One natural way is to use a StringTokenizer and a stack. Stack is a class (defined in java.util; see Recipe 7.14) that implements an easy-to-use last-in, first-out (LIFO) stack of objects.


To reverse the characters in a string, use the StringBuilder reverse( ) method:

String sh = "FCGDAEB";
System.out.println(sh + " -> " + new StringBuffer(sh).reverse( ));

The letters in this example list the order of the sharps in the key signatures of Western music; in reverse, it lists the order of flats. Alternately, of course, you could reverse the characters yourself, using character-at-a-time mode (see Recipe 3.4). A popular mnemonic, or memory aid, for the order of sharps and flats consists of one word for each sharp instead of just one letter, so we need to reverse this one word at a time. Example 3-5 adds each one to a Stack (see Recipe 7.14), then processes the whole lot in LIFO order, which reverses the order.
String s = "Father Charles Goes Down And Ends Battle";
// Put it in the stack frontward
Stack myStack = new Stack( );
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens( )) myStack.push(st.nextElement( ));
// Print the stack backward
System.out.print('"' + s + '"' + " backwards by word is:\n\t\"");
while (!myStack.empty( )) {
 System.out.print(myStack.pop( ));
 System.out.print(' ');


Post a Comment