Java Reversing a String by Word or by Character
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('"');
No comments:
Post a Comment