这里介绍Java中5中实现String反转的方式。

一、数组实现String反转

//数组实现String反转
public String reverseByArray(){
if(str == null || str.length() == 1){
return null;
}
char[] ch = str.toCharArray();//字符串转换成字符数组
for(int i = 0 ; i < ch.length/2 ; i++){
char temp = ch[i];
ch[i] = ch[ch.length-i-1];
ch[ch.length-i-1] = temp;
}
return new String(ch);
}

二、栈实现String反转

//用栈实现String反转
public String reverseByStack(){
if(str == null || str.length() == 1){
return null;
}
Stack<Character> stack = new Stack<Character>();
char[] ch = str.toCharArray();//字符串转换成字符数组
for (char c : ch) {
stack.push(c);//每个字符,推进栈
}
for (int i = 0; i < ch.length; i++) {
ch[i] = stack.pop();//移除这个堆栈的顶部对象
}
return new String(ch);
}

三、逆序遍历实现String反转

//用逆序遍历实现String反转

    public String reverseBySort(){
if(str == null || str.length() == 1){
return null;
}
StringBuffer sb = new StringBuffer();
for (int i = str.length() -1 ; i >= 0; i--) {
sb.append(str.charAt(i));//使用StringBuffer从右往左拼接字符
}
return sb.toString();
}

四、位运算实现String反转

//使用位运算实现String反转
public String reverseByBit() {
if(str == null || str.length() == 1){
return null;
}
char[] ch = str.toCharArray();//字符串转换成字符数组
int len = str.length();
for(int i= 0; i< len/ 2; i++) {
ch[i]^= ch[len- 1- i];
ch[len- 1- i]^= ch[i];
ch[i]^= ch[len- 1- i];
}
return new String(ch);
}

五、递归实现String反转

//使用递归实现String反转
public String reverseByRecursive(String str){
if(str == null || str.length() == 0){
return null;
}
if(str.length() == 1){
return str;
} else {
//从下标为1开始截取字符串,在返回下标为0的字符
return reverseByRecursive(str.substring(1)) + str.charAt(0);
}
}

六、测试

public class Test {
public static void main(String[] args) {
String s = "123456";
Reverse r = new Reverse(s);
System.out.println(r.reverseByArray());
System.out.println(r.reverseByStack());
System.out.println(r.reverseBySort());
System.out.println(r.reverseByBit());
System.out.println(r.reverseByRecursive(s)); }
}

七、结果

八、用于String反转的全部代码

public class Reverse {
private String str = null; public Reverse(String str){
this.str = str;
} //数组实现String反转
public String reverseByArray(){
if(str == null || str.length() == 1){
return null;
}
char[] ch = str.toCharArray();//字符串转换成字符数组
for(int i = 0 ; i < ch.length/2 ; i++){
char temp = ch[i];
ch[i] = ch[ch.length-i-1];
ch[ch.length-i-1] = temp;
}
return new String(ch);
}
//用栈实现String反转
public String reverseByStack(){
if(str == null || str.length() == 1){
return null;
}
Stack<Character> stack = new Stack<Character>();
char[] ch = str.toCharArray();//字符串转换成字符数组
for (char c : ch) {
stack.push(c);//每个字符,推进栈
}
for (int i = 0; i < ch.length; i++) {
ch[i] = stack.pop();//移除这个堆栈的顶部对象
}
return new String(ch);
}
//用逆序遍历实现String反转
public String reverseBySort(){
if(str == null || str.length() == 1){
return null;
}
StringBuffer sb = new StringBuffer();
for (int i = str.length() -1 ; i >= 0; i--) {
sb.append(str.charAt(i));//使用StringBuffer从右往左拼接字符
}
return sb.toString();
}
//使用位运算实现String反转
public String reverseByBit() {
if(str == null || str.length() == 1){
return null;
}
char[] ch = str.toCharArray();//字符串转换成字符数组
int len = str.length();
for(int i= 0; i< len/ 2; i++) {
ch[i]^= ch[len- 1- i];
ch[len- 1- i]^= ch[i];
ch[i]^= ch[len- 1- i];
}
return new String(ch);
}
//使用递归实现String反转
public String reverseByRecursive(String str){
if(str == null || str.length() == 0){
return null;
}
if(str.length() == 1){
return str;
} else {
//从下标为1开始截取字符串,在返回下标为0的字符
return reverseByRecursive(str.substring(1)) + str.charAt(0);
}
}
}

全部代码

5中方式实现String反转的更多相关文章

  1. 20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习

    20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...

  2. 20155312张竞予 20170510实践一:在IDEA中以TDD的方式对String类和Arrays类进行学习

    实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...

  3. Java中有趣的String、StringBuffer与StringBuilder

    String介绍 String类属于java.lang包中,String类是不可变类,任何对String的改变都会引发新的String对象的生成. 创建String的两种方式: 1.通过构造器创建:S ...

  4. 将一个字符串进行反转:将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”

    将一个字符串进行反转:将字符串中指定部分进行反转.比如"abcdefg"反转为"abfedcg"方式一:转换为char[] public String reve ...

  5. java中特殊的String类型

    Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String("abc"); 第 ...

  6. c# 发送Email的2中方式

    先来第一种 // 版权所有 ZhuoYue Co.,Ltd 卓越一通秘密信息 // 文件名称:MyEmailByCDO.cs // 作 者:huangzh // 创建日期:2015-08-20 16: ...

  7. 07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例

     1 目标从sqllite中读取数据并显示如下: MainActivity对应的界面 MainActivity2对应的界面           2  配置Android的清单文件 <?xml ...

  8. java和js中int和String相互转换常用方法整理

    java中int和String的相互转换常用的几种方法: int  > String int i=10;String s="";第一种方法:s=i+""; ...

  9. $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    $.ajax()方法详解   jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...

随机推荐

  1. 2015南阳CCPC E - Ba Gua Zhen 高斯消元 xor最大

    Ba Gua Zhen Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description During the Three-Kingdom perio ...

  2. JAVA中调用CMD命令,并输出运行结果

    package com.wzw.util; import java.io.BufferedReader; import java.io.InputStreamReader; public class ...

  3. 【转】Delphi调用webservice总结

    原文:http://www.cnblogs.com/zhangzhifeng/archive/2013/08/15/3259084.html Delphi调用C#写的webservice 用delph ...

  4. [ES6] 18. Map

    ES6 provides Map, it is a set of k-v pair. Key can be number, string, object, function and even unde ...

  5. #define使用方法

    1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,假设在程序里面写 if(i<MAXTIME){.........} 编译 ...

  6. perl 变量详解

    http://www.perlmonks.org/?node_id=933450 use strict; use Devel::Peek; my $a; Dump($a); $a=4; Dump($a ...

  7. B. Fox And Two Dots

    B. Fox And Two Dots time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. Sky number

    描述 key 天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进 制数BB0,其四位数字之和也为22,同时 ...

  9. 关于 ES6箭头函数

    转自  http://simplyy.space/article/577c5b0dcbe0a3e656c87c24 多个连续的箭头函数与柯里化 高阶函数 高阶函数定义:将函数作为参数或者返回值是函 ...

  10. [转]关于IIS7.5下的web.config 404 配置的一些问题

    本文转自:http://www.codesky.net/article/201103/161589.html 本文介绍一个关于IIS环境下web.config配置的经验问题.在IIS7.5中添加配置4 ...