在Java中反转字符串String(5种不同的方式)

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

在Java中反转字符串(5种不同的方式)

本文讨论5种用Java语言反转字符串的不同方法。
例子:

Input :  GeeksforGeeks
Output : skeeGrofskeeG

Input :  Geeks for Geeks
Output : skeeG rof skeeG

以下是关于String和StringBuffer类的一些有趣事实:
1. String对象是不可变的。
2. Java中的String类没有reverse()方法,但是StringBuilder类已经构建了reverse()方法。
3. StringBuilder类没有toCharArray()方法,而String类确实有toCharArray()方法。

  1. 将字符串转换为字节: getBytes()方法用于将输入字符串转换为字节[]。

    方法:

    1.创建长度相等的临时字节[] 
       到输入字符串的长度。
    2.存储字节(我们通过使用获得 
       getBytes()方法)以相反的顺序放入 
       临时字节[]。
    3.使用byte [] to创建一个新的String abject
       存储结果。
    
    // Java program to ReverseString using ByteArray.
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    
    // Class of ReverseString
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "GeeksforGeeks";
    
            // getBytes() method to convert string 
            // into bytes[].
            byte [] strAsByteArray = input.getBytes();
    
            byte [] result = 
                       new byte [strAsByteArray.length];
    
            // Store result in reverse order into the
            // result byte[]
            for (int i = 0; i<strAsByteArray.length; i++)
                result[i] = 
                 strAsByteArray[strAsByteArray.length-i-1];
    
            System.out.println(new String(result));
        }
    }
    

    输出:

    skeeGrofskeeG
    
  2. 使用StringBuilder类的内置reverse()方法:

    String类没有reverse()方法,我们需要将输入字符串转换为StringBuilder,这是通过使用StringBuilder的append方法实现的。之后,通过从第一个索引到最后一个索引进行扫描,打印出反转字符串的字符。

    // Java program to ReverseString using StringBuilder
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    
    // Class of ReverseString
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks for Geeks";
    
            StringBuilder input1 = new StringBuilder();
    
            // append a string into StringBuilder input1
            input1.append(input);
    
            // reverse StringBuilder input1
            input1 = input1.reverse();
    
            // print reversed String
            System.out.println(input1);
        }
    }
    

    输出:

    skeeG rof skeeG
    
  3. 将字符串转换为字符数组:用户输入要反转的字符串。

    方法:

    首先,将字符串转换为字符数组
       通过使用内置的Java String类 
       方法toCharArray()。
    2.然后,从结尾扫描字符串到开始, 
       并逐个打印字符。
    
    // Java program to Reverse a String  by
    // converting string to characters  one
    // by one
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    
    // Class of ReverseString
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "GeeksForGeeks";
    
            // convert String to character array
            // by using toCharArray
            char[] try1 = input.toCharArray();
    
            for (int i = try1.length-1; i>=0; i--)
                System.out.print(try1[i]);
        }
    }
    

    输出:

    skeeGrofskeeG
    
  4. 使用toCharArray()将输入字符串转换为字符数组:使用toCharArray()

    - 将字符串类型的内置方法转换为字符数组。然后,从两侧扫描字符数组,即从开始索引(左)和上次索引(右)同时扫描。

    1.将左侧索引设置为0并右移 
       索引等于字符串-1的长度。
    2.交换起始索引的字符 
       使用最后的索引扫描进行扫描 
       逐个。之后,增加左边
       索引1(左++)并减少右边 
       由1即,(右)移动到下一个 
       字符数组中的字符。
    3.继续,直到左侧小于或等于
       正确的。
    
    // Java program to Reverse a String using swapping
    // of variables
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    
    // Class of ReverseString
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks For Geeks";
            char[] temparray = input.toCharArray();
            int left, right=0;
            right = temparray.length-1;
    
            for (left=0; left < right ; left++ ,right--)
            {
                // Swap values of left and right
                char temp = temparray[left];
                temparray[left] = temparray[right];
                temparray[right]=temp;
            }
    
            for (char c : temparray)
                System.out.print(c);
            System.out.println();
        }
    }
    

    输出:

    skeeG roF skeeG
  5. 使用ArrayList对象:使用toCharArray()内置方法将输入字符串转换为字符数组。

    然后,将数组的字符添加到ArrayList对象中。Java还为Collections类构建了reverse()方法。由于Collections类的reverse()方法接受一个列表对象,为了反转列表,我们将传递一个列表类型的LinkedList对象。

    1.我们将String内容复制到一个对象 
       的ArrayList。
    1.我们通过使用创建一个ListIterator对象 
       LinkedList上的listIterator()方法 
       目的。
    2. ListIterator对象用于迭代 
       列表。
    3. ListIterator对象帮助我们迭代 
       在反向列表上打印一份 
       通过一个输出屏幕。
    
    // Java program to Reverse a String using ListIterator
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    
    // Class of ReverseString
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks For Geeks";
            char[] hello = input.toCharArray();
            List<Character> trial1 = new ArrayList<>();
    
            for (char c: hello)
                trial1.add(c);
    
            Collections.reverse(trial1);
            ListIterator li = trial1.listIterator();
            while (li.hasNext())
                System.out.print(li.next());
        }
    }
    

    输出:

    skeeG roF skeeG
  •   本文标题:在Java中反转字符串String(5种不同的方式) - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/3996.html
    扫描二维码添加微信 
  • ,领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘优惠券!添加微信后,分享淘宝选中的机械键盘给淘宝机器人即可领取!
    支持我们,就用微信淘宝!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读