题目

用递归反转字符串

思路

本题用递归反转字符串(原地交换)。 函数 reverse(s, l, r):若 l>=r 结束;否则交换 s[l] 与 s[r],再递归处理中间区间 l+1, r-1。主程序对整串调用 reverse(s, 0, len-1)。

解题分析

递归交换首尾再处理中间子串。迭代双引用与第 50 题相同。递归深度约 n/2,字符串很长时迭代更安全。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String s = "abcd";
        System.out.println(new StringBuilder(s).reverse().toString());
    }
}

运行示例

输出:

dcba