Java Reversing a String by Word or by Character

Java Reversing a String by Word or by Character

Problem 

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

Solution 

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.

Explained

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

// StringRevChar.java
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.

StringReverse.java
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(' ');
}
System.out.println('"');

0 comments:

Post a Comment