首页 > 编程语言 >Java字符串逆序的四种方法及比较

Java字符串逆序的四种方法及比较

时间:2023-07-12 18:11:06浏览次数:45  
标签:Java String runoob 反转 result 字符串 逆序 string

Java中实现字符串逆序有以下几种常见的方法:

public class StringReverseExample {
    public static void main(String[] args) {
        String string = "runoob";
        String reverse = new StringBuffer(string).reverse().toString();
        System.out.println("字符串反转前:" + string);
        System.out.println("字符串反转后:" + reverse);
    }
}

输出结果为:

字符串反转前:runoob
字符串反转后:boonur

这种方法的优点是简单易用,不需要额外的空间和循环。缺点是如果字符串很长,可能会占用较多的内存和时间。

public class StringReverseExample {
    public static void main(String[] args) {
        String string = "runoob";
        String result = "";
        for (int i = string.length() - 1; i >= 0; i--) {
            result = result + string.charAt(i);
        }
        System.out.println("字符串反转前:" + string);
        System.out.println("字符串反转后:" + result);
    }
}

输出结果为:

字符串反转前:runoob
字符串反转后:boonur

这种方法的优点是不需要额外的类和对象,只需要一个String变量。缺点是每次拼接都会创建一个新的String对象,如果字符串很长,可能会造成内存浪费和性能下降。

public class StringReverseExample {
    public static void main(String[] args) {
        String string = "runoob";
        char[] chars = string.toCharArray();
        int n = chars.length - 1;
        for (int i = 0; i < chars.length / 2; i++) {
            char temp = chars[i];
            chars[i] = chars[n - i];
            chars[n - i] = temp;
        }
        String result = new String(chars);
        System.out.println("字符串反转前:" + string);
        System.out.println("字符串反转后:" + result);
    }
}

输出结果为:

字符串反转前:runoob
字符串反转后:boonur

这种方法的优点是不需要创建新的String对象,只需要一个字符数组和一个临时变量。缺点是需要额外的空间来存储字符数组,并且需要遍历数组两次。

  • 方法四:使用栈的先进后出特性。这种方法是利用栈这种数据结构,将字符串的每个字符依次压入栈中,然后再依次弹出栈顶元素,并拼接成新的字符串。例如:
import java.util.Stack;

public class StringReverseExample {
    public static void main(String[] args) {
        String string = "runoob";
        int stackSize = string.length();
        Stack<Character> theStack = new Stack<>();
        for (int i = 0; i < stackSize; i++) {
            theStack.push(string.charAt(i));
        }
        StringBuilder result = new StringBuilder();
        while (!theStack.isEmpty()) {
            char ch = theStack.pop();
            result.append(ch);
        }
        System.out.println("字符串反转前:" + string);
        System.out.println("字符串反转后:" + result.toString());
    }
}

输出结果为:

字符串反转前:runoob
字符串反转后:boonur

这种方法的优点是利用了栈的特性,不需要额外的循环和交换操作。缺点是需要引入栈这种数据结构,可能会增加代码的复杂度和内存消耗。

以上就是我为你写的关于Java字符串逆序方法的博客,希望对你有所帮助。

标签:Java,String,runoob,反转,result,字符串,逆序,string
From: https://www.cnblogs.com/shoshana-kong/p/17548486.html

相关文章

  • 不确定大小的数组怎么办?Java中三种常用的方法
    Java中如何操作不确定大小的数组1. 前言 1.1 什么是数组数组是一种存储多个相同类型数据的有序集合,它可以通过索引来访问每个元素。数组是一种引用类型的变量,它在内存中占用一块连续的空间。 1.2  数组的特点数组有以下几个特点:-数组的长度是确定的,一旦创建就不能......
  • Java实现浏览器端大文件分片上传解决方案
    ​ 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里......
  • Java Map 通过key过滤
    pom文件:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version></dependency>代码:packagecom.example.core.utils.collections;importcom.google.common.......
  • C# 获取字符串自动换行
    ```//判断是否是汉字publicstaticboolIsChinese(charchr){return(int)chr>0x4E00&&(int)chr<0x9FA5;}///<summary>///截取字符串,不限制字符串长度///</summary>///<paramname="str&qu......
  • 你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】
    ......
  • Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRange
    http://c.biancheng.net/view/924.html所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制。本文主要介绍关于 Java 里面的数组复制(拷贝)的几种方式和用法。在Java中实现数组复制分别有以下4种方法:Arrays类的copyOf()方法Arrays类的copyOfRange()方法Syst......
  • 初识Java
    Java帝国三高:高可用、高性能、高并发Java三大版本JavaSE:标准版(桌面程序、控制台开发...)JavaME:嵌入式开发(手机,小家电...)JavaEE:E企业级开发(web端、服务器开发...)Java开发常用平台、系统、工具构建工具:Maven、Ant、Jekins应用服务器:Tomcat,Jetty,Jboss,WebsphereWeb开......
  • Java实现浏览器端大文件分片上传功能
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{    InputStreamstream=file.getInputStream();// 把文件读入    StringfilePath=request.......
  • Java实现浏览器端大文件分片上传方案
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。pub......
  • Java中Timer的用法
    用法很简单,new一个timer,然后写一个timertask的子类即可。代码如下:packagecomz.autoupdatefile;importjava.util.Timer;importjava.util.TimerTask;publicclassM{publicstaticvoidmain(String[]args){//TODOtodo.generatedbyzoe......