# 1. 字符串翻转
在这个过程中不能引入外部的变量,仅使用递归来求解这个问题。对于这个问题,需要找到其子问题,以及程序的出口。不妨做一个简单的分析:
- 如果字符串只有一个字符,那么返回这个字符串即可;
- 如果字符串不只有一个字符,那么我们需要划分为左右两个部分,然后返回右左即可;
那么,对应的代码可以描述为:
~~~
/**
* 递归的完成字符串的翻转
* @param str 待翻转字符串
* @return 翻转后字符串
*/
public String reverse(String str){
int len = str.length();
if(len <= 1){ // 长度为空或者为1均返回这个字符本身
return str;
}
String left = str.substring(0, len / 2);
String right = str.substring(len / 2, len);
return reverse(right) + reverse(left);
}
~~~