5中方式实现String反转
这里介绍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反转的更多相关文章
- 20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习
20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...
- 20155312张竞予 20170510实践一:在IDEA中以TDD的方式对String类和Arrays类进行学习
实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...
- Java中有趣的String、StringBuffer与StringBuilder
String介绍 String类属于java.lang包中,String类是不可变类,任何对String的改变都会引发新的String对象的生成. 创建String的两种方式: 1.通过构造器创建:S ...
- 将一个字符串进行反转:将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
将一个字符串进行反转:将字符串中指定部分进行反转.比如"abcdefg"反转为"abfedcg"方式一:转换为char[] public String reve ...
- java中特殊的String类型
Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String("abc"); 第 ...
- c# 发送Email的2中方式
先来第一种 // 版权所有 ZhuoYue Co.,Ltd 卓越一通秘密信息 // 文件名称:MyEmailByCDO.cs // 作 者:huangzh // 创建日期:2015-08-20 16: ...
- 07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例
1 目标从sqllite中读取数据并显示如下: MainActivity对应的界面 MainActivity2对应的界面 2 配置Android的清单文件 <?xml ...
- java和js中int和String相互转换常用方法整理
java中int和String的相互转换常用的几种方法: int > String int i=10;String s="";第一种方法:s=i+""; ...
- $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
随机推荐
- delphi 去掉TreeView水平滚动条
使用API函数:声明 FUNCTION ulong ShowScrollBar(ulong hwnd,ulong wBar,ulong bShow) LIBRARY "user32. ...
- TOJ 4325 RMQ with Shifts / 线段树单点更新
RMQ with Shifts 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 描述 In the traditional RMQ (Range M ...
- hibernate 实体关系映射笔记
@经常使用属性说明: @Entity:实体类 @Table:指定相应数据表 @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态 @Col ...
- 解决easyui-datagrid在ie中无法reload问题
easyui在页面载入时,会自己主动填充datagrid中的数据,当加入.改动.删除后,会触发reload事件,对datagrid进行又一次载入. 这个过程在FireFox中没有问题,用firebug ...
- Python学习 之 正则表达式
1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"ab ...
- ESX虚拟机文件列表详解
http://jackiechen.blog.51cto.com/196075/210492 关闭状态时的文件列表: *-flat.vmdk:虚拟机的原始磁盘文件,包含整个虚拟机镜像. *.nvr ...
- Matrix multiplication hdu4920
Problem Description Given two matrices A and B of size n×n, find the product of them. bobo hates big ...
- Android调用相册截取图片遇到的问题
1.在Android中可以使用如下的方式来调用相册,选择图片进行裁剪使用,昨天在开发的时候遇到一个问题 private void cropBigImageUri(Uri uri, int output ...
- android的个人代码总结
1.关于一个动作的实现,在Activity中可以用实现一个接口的方式来实现,在实现代码时可用IF进行判断是那个要执行的动作: 2.在软件开发过程中,软件界面的布局也非常重要:还是要多看看:
- struts2 后台action向前端JSP传递参数的问题
后台有个方法,里面部分代码如下: System.out.print("alter:"+user.getId()); User temp=userservice.getUserByU ...