方法一
一种低效率的递归方法实现
public class Reverse {
/**
* 将一个字符串逆序输出的一种低效率递归方法实现
* @param s 输入字符串
* @return 输出逆序字符串
*/
public static String reverseString(String s) {
int N = s.length();
if (N <= 1)
return s;
String a = s.substring(1, N);
return reverseString(a) + s.charAt(0);
}
}
方法二
采用二分递归方法提高效率
/**
* 将一个字符串逆序输出,递归方法实现
* @param s 输入字符串
* @return 输出逆序字符串
*/
public static String reverseStringByRecursion(String s) {
int N = s.length();
if (N <= 1)
return s;
String a = s.substring(0, N / 2);
String b = s.substring(N / 2, N);
return reverseStringByRecursion(b) + reverseStringByRecursion(a);
}
方法三
利用栈“先进后出”原理
/**
* 利用Java的栈的“先进后出”原理进行字符串逆序
* @param s 输入字符串
* @return 输出逆序字符串
*/
public static String reverseStringByStack(String s) {
Stack<Character> stack = new Stack<>();
char[] ary = s.toCharArray();
for (char c : ary) {
stack.push(c);
}
StringBuilder builder = new StringBuilder();
for (char c : stack) {
builder.append(c);
}
return builder.toString();
}