Java 原串翻转(5 Ways To Reverse A String In Java )

来源:互联网 发布:程序员思维修炼 pdf 编辑:程序博客网 时间:2024/06/05 09:24

有关java原字符串翻转的问题,本文将介绍五种不同的方法实现

部分参考文章:
http://javahungry.blogspot.com/2014/12/5-ways-to-reverse-string-in-java-with-example.html

写在前面:

  1. StringBuffer类提供了一个reverse()方法,可以直接将可以直接将字符串翻转,而String类中没有这个方法。

  2. String类中提供一个toCharArray()方法,可以将字符串转化成一个char[ ] 数组。而StringBuffer类中也是不存在此方法的

参考JAVA API

StringBuffer类
public StringBuffer reverse()
将此字符序列用其反转形式取代。如果序列中存在代理项 (surrogate pair),在 reverse 操作中将其作为单个字符处理。因此,高-低代理项的顺序不会反转。假设 n 为执行 reverse 方法前此字符序列的字符长度(并非 char 值的长度),则新字符序列中索引 k 处的字符将等于原字符序列索引 n-k-1 处的字符。
返回:
此对象的一个引用。

String类
public char[] toCharArray()
将此字符串转换为一个新的字符数组。
返回:
一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列。

方法一:
使用String类自带的toCharArray( )方法,并从字符数组的最后一位开始打印。

import java.io.*;import java.util.*;public class reverseString {    public static void main(String[] args) {        String input="";        System.out.println("Enter the input string");        try        {   //输入要翻转的字符串            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));              input = br.readLine();            char[] try1= input.toCharArray();            for (int i=try1.length-1;i>=0;i--){                System.out.print(try1[i]);            }        }        catch (IOException e) {            e.printStackTrace();        }}}

方法二:
使用StringBuffer类自带的reverse( )方法,从字符数组的第一位开始打印。

import java.io.*;import java.util.*;public class reverseString {    public static void main(String[] args) {         String input="AliveisAwesome";         StringBuilder input1 = new StringBuilder();         input1.append(input);         input1=input1.reverse();          for (int i=0;i<input1.length();i++){            System.out.print(input1.charAt(i));          }     } }

方法三:
将toCharArray() 转换后的字符数组元素进行逆序化,即将A[N-1]和A[0]交换,A[N-2]和A[1]交换….直到Left >= Right。

import java.io.*;import java.util.*;public class reverseString { public static void main(String[] args) {    String input = "Be in present";    char[] temparray= input.toCharArray();    int left,right=0;    right=temparray.length-1;    for (left=0; left < right ; left++ ,right--)    {     //交换左右的值      char temp = temparray[left];     temparray[left] = temparray[right];     temparray[right]=temp;    }    for (char c : temparray)       System.out.print(c);       System.out.println();    } }

=============以下方法还不是太透彻,如有错误欢迎指出===============

方法四:
Java中 Collections类中也提供了一个reverse(List<> list)方法,其参数是list,因此要使用此方法必须将String转成字符数组然后存到list中去,此处使用LinkedList,因为它在插入时保留了插入顺序。

import java.io.*;import java.util.*;public class reverseString { public static void main(String[] args) {     String input = "Be in present";     char[] hello=input.toCharArray();     List<Character> trial1= new LinkedList<>();     for(char c: hello)         trial1.add(c);     Collections.reverse(trial1);     ListIterator li = trial1.listIterator();       while(li.hasNext()){        System.out.print(li.next());}       }   }
2 0
原创粉丝点击