您的位置:首页 > 编程语言 > Java开发

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

2016-02-09 20:27 465 查看

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

部分参考文章:

http://javahungry.blogspot.com/2014/12/5-ways-to-reverse-string-in-java-with-example.html

写在前面:

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

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());}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面经