看到坛子里有人提出这么一个问题,如何将"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