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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树