ProblemYou wish to reverse a string, a character, or a word at a time. SolutionYou 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. DiscussionTo 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. Example 3-5. StringReverse.javaString 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('"'); |