使用递归来反转一个短语

时间:2013-02-05 23:29:20

标签: java recursion reverse

我有一个赋值,要求我创建一个Java程序,使用递归来反转输入短语并输出它。例如,给定输入“DATA STRUCTURES AND ALGORITHMS”,程序将输出“算法和结构数据”。

其中一个限制是除了单个本地String变量外,程序中不能使用任何存储或Java集合。

我无法理解如何从多行读取输入数据并在字符串上实现递归方法。我理解递归的一般概念,但是将它实现到Java是一项更困难的任务。

1 个答案:

答案 0 :(得分:2)

正如所提出的,这个解决方案会逐字逐句“反转”一个字符串,其中的单词只用一个空格字符分隔。

public class TestClass {

    public static String wordReverse(String s) {
        int idx = s.indexOf(" ");
        if (idx < 0) {
            // no space char found, thus, s is just a single word, so return just s itself
            return s;
        } else {
            // return at first the recursively reversed rest, followed by a space char and the first extracted word
            return wordReverse(s.substring(idx + 1)) + " " + s.substring(0, idx); 
        }
    }

    public static void main(String[] args) {
        System.out.println(wordReverse("DATA STRUCTURES AND ALGORITHMS"));
    }
}
  

我无法理解如何从多行读取输入数据

我并不完全明白这一点,但如果您要求如何从stdin读取用户输入,那么请查看 System.in