首页 > 解决方案 > 组合字符串及其反向的递归方法

问题描述

每个人。我对java很陌生,所以我希望我的问题听起来不是很愚蠢,但是我在进行在线练习时遇到了麻烦。

基本上,我需要在java中编写一个递归方法,称为reverse,它接受一个String参数并返回一个与其反向连接的字符串。因此,例如,如果字符串是“Java”,它会将其返回为“JavaavaJ”

我编写了大部分代码,但无法弄清楚如何在 return 方法中将两者结合起来。

public static String reverse(String str) {
    if ((null == str) || (str.length() <= 1)) {
        return str;
    }
    return reverse(str.substring(1)) + str.charAt(0);
}

标签: javastringrecursion

解决方案


您还需要在要反转的字符串前面加上第一个字符。像这样的东西应该工作:

public String reverse(String str) {
    if (null == str) {
        return null;
    }
    if (str.length() <= 1) {
        return str + str;
    }
    return str.charAt(0) + reverse(str.substring(1)) + str.charAt(0);
}

如果不添加第一个字符,递归只会产生字符串的反转。同样,当您位于最后一个字符时,也需要将整个字符串附加两次(例如,使用此逻辑反转的“a”似乎应该产生“aa”)


推荐阅读