【问题标题】:Reverse a String in Java recursively [duplicate]递归地在Java中反转字符串[重复]
【发布时间】:2017-02-26 00:43:37
【问题描述】:

我参考了Whats the best way to recursively reverse a string in Java? 的解决方案,但我的解决方案与我不理解的正确解决方案之间存在细微差别。

我正在尝试反转通过命令行给出的 args 中的字符串。这是我反转字符串的递归方法(几乎相同)。但是,我遇到了 StackOverflowException。我想知道为什么会这样?是不是因为我的方法是静态方法而他们的不是?

public static String reverse(String word) {
    if (word.length() == 1) {
        return word;
    } else {
        return reverse(word.substring(1) + word.charAt(0));
    }
}

【问题讨论】:

  • 从括号中取出 word.charAt(0)。

标签: java recursion


【解决方案1】:

每次调用 reverse 时,字符串的长度都不会改变。如果您将退货声明更改为:

return reverse(word.substring(1))  + word.charAt(0);

每次调用reverse,单词的长度会缩短一个字符。

【讨论】:

    【解决方案2】:
    public String reverseString(String str) {
    
            if (str.length() == 1) {
                return str;
            } else {
                reverse += str.charAt(str.length() - 1)
                        + reverseString(str.substring(0, str.length() - 1));
                return reverse;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2020-07-09
      • 2013-09-27
      • 2017-06-22
      • 2012-04-01
      相关资源
      最近更新 更多