2015-12-15 63 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