有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中给定句子的字符串反转

有人能告诉我如何编写Java程序来反转给定的句子吗

例如,如果输入为:

"This is an interview question"

输出必须是:

"question interview an is this"


共 (6) 个答案

  1. # 1 楼答案

    Bozho已经给出了一个非常适合Java的答案,但是如果您需要在没有Java API方法的情况下解决这个问题:

    相反,您可以简单地将单个单词弹出到^{}上,并在没有单词时将它们全部弹出

    (更清楚的是,Java确实提供了一个^{} class,因此也可以在Java中使用这个方法)

  2. # 2 楼答案

    String[] words = sentence.split(" ");
    String[] reversedWords = ArrayUtils.reverse(words);
    String reversedSentence = StringUtils.join(reversedWords, " ");
    

    (使用commons lang中的^{}StringUtils,但这些都是简单的编写方法-只有几个循环)

  3. # 3 楼答案

    只是与众不同:递归解决方案。不会添加任何额外的空格

    public static String reverse(String s) {
       int k = s.indexOf(" ");
       return k == -1 ? s : reverse(s.substring(k + 1)) + " " + s.substring(0, k);
    }
    
    
    System.out.println("[" + reverse("This is interview question") + "]");
    // prints "[question interview is This]"
    

    我还将改进split解决方案,改用\b(这太明显了!)

        String[] parts = "Word boundary is better than space".split("\\b");
        StringBuilder sb = new StringBuilder();
        for (int i = parts.length; i --> 0 ;) {
            sb.append(parts[i]);
        }
        System.out.println("[" + sb.toString() + "]");
        // prints "[space than better is boundary Word]"
    
  4. # 4 楼答案

    java的每一个无聊的部分:

    List<String> l = new ArrayList<String>(Arrays.asList("this is an interview question".split("\\s")));
    Collections.reverse(l);
    StringBuffer b = new StringBuffer();
    for( String s : l ){
        b.append(s).append(' ');
    }
    b.toString().trim();
    

    在groovy中,它更具可读性:

    "this is an interview question"
        .split("\\s")
        .reverse()
        .join(' ')
    
  5. # 5 楼答案

    只需将它在一个空格字符上拆分为一个字符串数组,然后按相反顺序在数组上循环并构造输出字符串

    String input = "This is interview question";
    String output = "";
    String[] array = input.split(" ");
    for(int i = array.length-1; i >= 0; i--)
    {
        output += array[i];
        if (i != 0) { output += " "; }
    }
    
  6. # 6 楼答案

    将字符串按空格分开,然后向后迭代以组合颠倒的句子

    String[] words =  "This is interview question".split(" ");
    
    String rev = "";
    for(int i = words.length - 1; i >= 0 ; i--)
    {
       rev += words[i] + " ";
    }
    
    // rev = "question interview is This "
    
    // can also use StringBuilder:
    StringBuilder revb = new StringBuilder();
    for(int i = words.length - 1; i >= 0 ; i--)
    {
       revb.append(words[i]);
       revb.append(" ");
    }
    // revb.toString() = "question interview is This "