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

有关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());}  
     }
   }
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值