首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java反转给定的句子

用Java反转给定的句子
EN

Stack Overflow用户
提问于 2010-04-26 13:14:03
回答 14查看 75.3K关注 0票数 14

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

例如,如果输入是:

“这是个面试问题”

产出必须是:

“问题面试是这样的吗”

EN

回答 14

Stack Overflow用户

发布于 2010-04-26 13:15:18

您将字符串拆分为空格,然后向后迭代,以组装反转的句子。

代码语言:javascript
复制
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 "
票数 24
EN

Stack Overflow用户

发布于 2010-04-26 13:17:07

代码语言:javascript
复制
String[] words = sentence.split(" ");
String[] reversedWords = ArrayUtils.reverse(words);
String reversedSentence = StringUtils.join(reversedWords, " ");

(使用来自commons的ArrayUtilsStringUtils,但这些方法很容易编写-只有几个循环)

票数 23
EN

Stack Overflow用户

发布于 2010-04-26 13:51:23

只是与众不同:一个递归的解决方案。不会增加任何额外的空间。

代码语言:javascript
复制
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解决方案(这太明显了!)

代码语言:javascript
复制
    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]"
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2713655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档