java - 反转字符串中的某些单词

标签 java

我需要反转给定字符串中 5 个或更多字符的长单词。例如: * 给定的字符串:我的名字是迈克尔。 * 输出:我的名字是 leahciM。

句子的其余部分保持不变,只是那些长单词被颠倒了。

到目前为止,我想到了这个:

public static String spinWords(String sentence) {
    String[] splitWords = sentence.split(" ");
    String reversedSentence = "";
    String reversedWord = "";
    for (String str : splitWords) {
        if (str.length() >= 5) {
            for (int i = str.length() - 1; i >= 0; i--)
                reversedWord += (str.charAt(i) + " ");
        }
    }
}

我把那些话颠倒了,但是 1)它们在一个字符串中,没有空格 2) 我不知道如何将它们放回字符串中的位置

最佳答案

这里有一个建议:

  • 编写一个反转字符串的方法:

    private static String reverse(String s) { ... }
    
  • 然后在您的主要方法中,在需要时调用它:

    if (str.length() >= 5) str = reverse(str);
    
  • 然后您需要将单词重新组合在一起,大概是在 reversedSentence 中字符串:

    reversedSentence += str + " "; //you will have an extra space at the end
    

旁注:

  • 使用StringBuilder对于较长的句子,可能比字符串连接更有效。
  • 你可以把所有的词放回List<String>在循环中调用 reversedSentence = String.join(" ", list)循环后
  • 反转字符串可以在一行中完成 - 您应该在 stackoverflow 上找到许多相关的问答。

关于java - 反转字符串中的某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337516/

相关文章:

java - 使用 lambda 从嵌套在嵌套映射内的一组列表构建最大值列表

java - Jenkins Email-ext Jelly 脚本(高级概述)

java 猜谜游戏可以运行但运行不正确

java - Spring IoC : Conditional Injection in run time

Java DecimalFormat, #仍然显示0

java - 奇怪的java.lang.OutOfMemoryError——进程没有崩溃

java - 以编程方式创建 JUnit 报告

java - 如何从多线程返回值?

java - 变量和运算符在赋值中似乎被忽略。什么可以使这一切发生?

java - 按名称访问对象变量和方法