java - 递归打印句子中的单词

标签 java recursion

我正在研究一种可以向后打印句子单词的方法。我非常接近解决方案,但遇到了一个小障碍。

这是我的代码:

public static String reverseString(String str) {

        if (str.equals(""))
            return "";

        else {

            int i = str.length() - 1;

            while (!Character.isWhitespace(str.charAt(i))) {
                if (i - 1 < 0)
                    break;
                i--;
            }

            return str.substring(i,str.length()) + reverseString(str.substring(0,i));
        }

    }

现在的问题是我的测试的输出:

String test = "This is a test.";

System.out.println(reverseString(test));

正在给我这个:

  test. a isThis

现在,当我尝试增加返回的子字符串的索引并手动添加空格时,它会切断“This”中的“T”。也就是说,如果我决定返回如下:

return str.substring(i+1,str.length()) + " " + reverseString(str.substring(0,i));

然后我就回来了

test. a is his 

有人对我的总体实现有任何建议或指示吗?

最佳答案

您可以将返回语句更改为:

return str.substring(i, str.length()).trim() + " " + reverseString(str.substring(0, i));

关于java - 递归打印句子中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578417/

相关文章:

java - 复制目录中的文件并更改文件名

java - 从 Android 中的 Web 服务对象响应中未检索到任何内容

java - 如何编写递归方法来返回包含 token 字符串的文件中的所有行

java - 如何将超出 ASCII 范围的字符转换为 HTML 实体

java - 使用其他列表中的值减少列表

recursion - 迭代还是递归来实现二叉搜索树?

c++ - 递归函数总是返回假

java - 图着色算法(贪心着色)

java - 在正则表达式中匹配带有井号 (#) 的单词

php - 如何让 PHP 函数在返回后继续?