看到坛子里有人提出这么一个问题,如何将"I am a programmer"输出成"remmargorp a ma I"。注意:相邻两个单词的空格数一次是1个,2个,3个。
1. 利用split()方法实现。
- public class TestSplit {
- public static void main (String args[]){
- String str1 = "I am a programmer";
- String str2 = "";
- String[] strArray = str1.split(" ");
- for (int i=strArray.length-1; i>=0; i--){
- str2 += strArray[i]+" ";
- }
- System.out.print (str2);
- }
- }
输出:
- programmer a am I
这个方法有一个缺点就是无法正常输出字符串后面的空格,需要改进下...
2. 利用堆栈实现。
- import java.util.*;
- public class UsingStackReverseString {
- public static void main (String args[]){
- String str1 = " I am a programmer ";
- String str2 = "";
- Stack stack1 = new Stack();
- Stack stack2 = new Stack();
- char[] strArray = str1.toCharArray();
- for (int i=0; i<strArray.length; i++){
- stack1.push(strArray[i]);
- }
- while (!stack1.empty()){
- if (stack1.peek() == (Object)' '){
- while (!stack2.empty()){
- str2 += stack2.pop();
- }
- str2 += stack1.pop();
- }
- else{
- stack2.push(stack1.pop());
- }
- while ((!stack2.empty()) && stack1.empty()){
- str2 += stack2.pop();
- }
- }
- System.out.print(str2);
- }
- }
结果是:
- programmer a am I