java翻转字符串几种方法

2022-08-18 20:29:13 浏览数 (4)

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));
    }
}

0 人点赞