前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java翻转字符串几种方法

java翻转字符串几种方法

原创
作者头像
在下是首席架构师
发布2022-08-18 20:29:13
3660
发布2022-08-18 20:29:13
举报
文章被收录于专栏:从入门到出门从入门到出门
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));
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.使用StringBuilder的reverse()方法
  • 2.使用charArray的for循环倒序输出
  • 3.使用栈Stack的先进后出原理
  • 4.使用递归算法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档