2015-12-15 67 views
0
class StringRev{ 
    public static void main(String args[]){ 
    String str = "He is the one"; 
    String temp = ""; 
    String finalString = ""; 
     for(int i =str.length()-1;i>=0;i--){ 
      temp +=i!=0?str.charAt(i):str.charAt(i)+" "; 
      if(str.charAt(i) == ' '||i==0){ 
       for(int j=temp.length()-1;j>=0;j--){ 
        finalString += temp.charAt(j); 
       } 
       temp = ""; 
      } 
     } 
      System.out.println(finalString); 
    } 
} 

我試圖solve.I有串"He is the one"反向"one the is He"
我已經用Java編寫了一些程序,但正在尋找其他最佳解決方案。
建議任何可能的方法來減小電流。如何扭轉使用列表迭代器這個詞在Java

+0

只需用空間串剛剛拆分,會給你一個單詞數組,反向迭代並將其追加到新字符串中。 –

回答

0

只是簡單地split給出的空間字符串,會給你的話的數組,迭代反向並將它附加到新的字符串如下:

String string = "He is the one"; 
System.out.println("Original String: " + string); 

String[] arr = string.split(" "); 

String reverseString = ""; 
for(int i = arr.length - 1; i >= 0; i--){ 
    reverseString += arr[i] + " "; 
} 

System.out.println("Reverse String: " + reverseString); 

或者您也可以使用Arrays工具來分割編輯字符串轉換成List,使其使用Collection效用reverse方法扭轉它,迭代它並創建字符串如下:

List<String> list = Arrays.asList(string.split(" ")); 
Collections.reverse(list); 

String reserveStringUsingList = ""; 
for(String str : list){ 
    reserveStringUsingList += str + " "; 
} 

System.out.println("Reverse String using List: " + reserveStringUsingList); 
+0

現在你甚至試圖從我的答案中竊取東西,並以你自己的方式呈現?青衫。 – Dropout

+0

我們都從JAVA鍊鋼。我剛剛改進了我的答案。而沒有必要添加關於trim()的細節。 –

+0

是的,你在閱讀我的答案後改進了它。沒有人從Java竊取,看起來你不明白這個詞的意思。當人們這樣做的時候,我通常不介意,但是如果你偷了,同時又想讓我的回答看起來像垃圾,那麼我不會只是默默地讓它滑倒,因爲這種態度真的不受歡迎所以。 – Dropout

0

分割字符串成單詞和第e向下迭代並將單詞追加回String。

public class StringRev{ 
    public static void main(String args[]){ 
     String input = "He is the one"; 
     String output = ""; 
     String[] inputSplit = input.split(" "); 

     for(int i=inputSplit.length-1; i>=0; i--){ 
      output += inputSplit[i] + " "; 
     } 

     System.out.println(output.trim()); //remove trailing space 
    } 
} 

如果你可以使用CollectionsStringUtil然後它更直截了當。

public class StringRev{ 
    public static void main(String args[]){ 
     String input = "He is the one"; 
     String[] inputSplit = input.split(" "); 

     Collections.reverse(Arrays.asList(inputSplit)); 
     String output = StringUtil.join(Arrays.asList(inputSplit), " "); 

     System.out.println(output); 
    } 
} 
+0

要使用StringUtil或StringUtils類,我們需要使用額外的庫。見:http://stackoverflow.com/questions/8660151/how-do-i-use-stringutils-in-java#answer-8660166 –

+0

@ParkashKumar這是顯而易見的不是嗎?當你想使用集合時,你需要'java.util.Collections',並且我沒有在你的答案中去解決它。不要試圖讓別人的答案看起來不如你的那麼好,只是爲了得到這些答案點.. – Dropout

+0

這不是全部關於點。它關於簡單和直接的答案,滿足OP的要求。而使用java.util.Collections時,除了JDK/JRE之外,您不需要任何其他庫,顯然,您將使用它來運行您的java程序。 –

0

這是你要的解決方案,使用ListIterator

代碼:

public static void main(String[] args) { 
    final String str = "He is the one"; 
    System.out.println(str); 
    System.out.println(reverseWords(str)); 
} 

static String reverseWords(String str) { 
    StringBuilder result = new StringBuilder(str.length()); 
    List<String> words = Arrays.asList(str.split(" ")); 
    if(!words.isEmpty()) { 
     ListIterator<String> it = words.listIterator(words.size()); 
     result.append(it.previous()); 
     while (it.hasPrevious()) { 
      result.append(' ').append(it.previous()); 
     } 
    } 
    return result.toString(); 
} 

輸出:

He is the one 
one the is He