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

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

    在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 字符串
  •   本文标题:在Java中反转字符串String(5种不同的方式) - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/3996.html

    发表笔记

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

    更多阅读