java - 使用递归 void 方法反转字符串

标签 java recursion

所以我试图编写一个方法来反转给定的字符串,但问题是它必须是一个 void 方法而不是一个 return 方法,这使得这变得很困难。我的代码对我来说似乎合乎逻辑,但它不起作用,所以我希望有人可以帮助我找出哪里出错了。

public class Reverser {

public String text, revText;

/**
 * @param args
 */
public static void main(String[] args) {
    Reverser greeting = new Reverser("Buildings");
    greeting.reverse();
    System.out.println(greeting.getText());

}

public Reverser(String _text){
    text = _text;
}

public void reverse(){
    int len = text.length();
    if(len >= 1){
        String last = text.substring(text.length() - 1, text.length());
        revText += last;
        text = text.substring(0, text.length() - 1);
        Reverser loop = new Reverser(text);     
        loop.reverse();         
    }
}

public String getText(){

    return revText; 
}

}

最佳答案

这是一个想法:

public class Reverser {

    private int idx;
    private String text, revText;

    public static void main(String[] args) {
        Reverser greeting = new Reverser("Buildings");
        greeting.reverse();
        System.out.println(greeting.getText());
    }

    public void reverse() {
        if (idx == text.length())
            return;
        revText = text.charAt(idx) + revText;
        idx++;
        reverse();
    }

    public Reverser(String _text) {
        idx = 0;
        text = _text;
        revText = "";
    }

    public String getText() {
        return revText; 
    }

}

与您的答案的根本区别在于,我使用索引属性来跟踪我在递归中的确切位置。这样我就不用修改原来的文本属性了。

关于java - 使用递归 void 方法反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254456/

相关文章:

javascript - 高级结构 : Surrounding ngRepeated items Angular. js

performance - 为什么这些定点 cata/ana 态射定义优于递归定义?

java - android studio 中无法实例化一个或多个类错误,因此设计未显示

java - JTextField 只显示 2 位小数

java - 使用 Collection 接口(interface)创建 ArrayList 对象的多态性有什么好处?

c++ - 递归打印二叉搜索树的内容?

java - 回溯递归问题来解决平衡括号

java - 将 Java Spring Rest Controller 中发布的 JSON 映射到 POJO

java - 为什么我解密时得到 'BadPaddingException'?

c - 如何正确使用循环和堆栈来模拟递归?