1.使用StringBuilder的reverse()方法
代码语言:javascript
复制String str = "12345";
//1.使用StringBuilder类
String reverse = new StringBuilder(str).reverse().toString();
//reverse()方法的原理分析:
public static void main(String[] args) {
char [] value = "abcdef".toCharArray();
int n = value.length - 1;
for (int j = (n-1) >> 1; j >= 0; j--) {
int k = n - j;
//System.out.println(j " <-> " k);
char cj = value[j];
char ck = value[k];
value[j] = ck;
value[k] = cj;
}
System.out.println(Arrays.toString(value));
}
2.使用charArray的for循环倒序输出
代码语言:javascript
复制String str = "12345";
//2.使用charArray的for循环倒序输出
char[] chars = str.toCharArray();
String result = "";
for (int i = chars.length - 1; i >= 0; i--) {
result = chars[i];
}
System.out.println(result);
3.使用栈Stack的先进后出原理
代码语言:javascript
复制String str = "12345";
//3.使用栈的先进后出原理
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i ) {
stack.push(str.charAt(i));
}
while(!stack.isEmpty()){
System.out.print(stack.pop());
}
4.使用递归算法
代码语言:javascript
复制public class 递归 {
//定义一个变量,作为比较值
static int i = 0;
public static void reverse(char [] chars, int k){
//如果已经到了字符数组最大长度,就不再递归
if (k == chars.length)
return;
//未到字符数组最大长度,继续递归
reverse(chars, k 1);
//走到这一步,说明已经递归完成了,开始要从后往前挨个实现逻辑了
if(i <= k){
//定义一个中间临时值,然后将首位与末位的值进行互换
char temp = chars[k];
chars[k] = chars[i];
chars[i ] = temp;
}
}
public static void main(String[] args){
String str = "java";
char[] chars = str.toCharArray();
//递归的次数取决于chars数组的长度,而且次数不能太多,否则容易造成栈内存溢出
reverse(chars, 0);
System.out.println(String.copyValueOf(chars));
}
}