【字符串反转总结】Java中七种方法实现
算法比较简单,注释就能说明问题,直接上代码!
方法一:(利用递归实现)
public static String reverse1(String s) {int length = s.length();if (length <= 1)return s;String left = s.substring(0, length / 2);String right = s.substring(length / 2, length);return reverse1(right) + reverse1(left); //调用递归}
方法二:(拼接字符串)
public static String reverse2(String s) {int length = s.length();String reverse = "";for (int i = 0; i < length; i++)reverse = s.charAt(i) + reverse;return reverse;}
方法三:(利用数组,倒序输出)
public static String reverse3(String s) {char[] array = s.toCharArray();String reverse = "";for (int i = array.length - 1; i >= 0; i--)reverse += array[i];return reverse;}
方法四:(利用StringBuffer的内置reverse方法)
public static String reverse4(String s) {return new StringBuffer(s).reverse().toString();}
方法五:(利用临时变量,交换两头数值)
public static String reverse5(String orig) {char[] s = orig.toCharArray();int n = s.length - 1;int halfLength = n / 2;for (int i = 0; i <= halfLength; i++) {char temp = s[i];s[i] = s[n - i];s[n - i] = temp;}return new String(s);}
方法六:(利用位异或操作,交换两头数据) 具体交换原理,参考上一篇文章
public static String reverse6(String s) {char[] str = s.toCharArray();int begin = 0;int end = s.length() - 1;while (begin < end) {str[begin] = (char) (str[begin] ^ str[end]);str[end] = (char) (str[begin] ^ str[end]);str[begin] = (char) (str[end] ^ str[begin]);begin++;end--;}return new String(str);}
方法七:(利用栈结构)
public static String reverse7(String s) {char[] str = s.toCharArray();Stack<Character> stack = new Stack<Character>();for (int i = 0; i < str.length; i++)stack.push(str[i]);String reversed = "";for (int i = 0; i < str.length; i++)reversed += stack.pop();return reversed;}
有其它方法,欢迎交流!兰州理工大学
【字符串反转总结】Java中七种方法实现相关推荐
- java中三种方法_Java文件I/O的三种方法
Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...
- Java中三种方法交换两个变量的值
1.中间变量 是最普也是最广泛使用的交换方式: 这种方法很容易理解,就是创建temp中间变量,m把值给temp,n给m,temp将m的值给n,这样就实现了交换. 2.加减运算 前提只能是数字 因为这种 ...
- Java中字符串反转的七种方法
突然在想,确实是浮躁了 字符串反转的七种方法: 在线代码: package test1;import java.util.Stack;public class Reverse {//方法一:递归+字符 ...
- (转)Shell中获取字符串长度的七种方法
Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...
- python 子串是否在字符串中_python七种方法判断字符串是否包含子串
1. 使用 in 和 not in in 和 not in 在 Python 中是很常用的关键字,我们将它们归类为 成员运算符. 使用这两个成员运算符,可以很让我们很直观清晰的判断一个对象是否在另一个 ...
- java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析
[java中判断字符串是否为数字的三种方法 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = s ...
- java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- java json转抽象对象_做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法...
原标题:做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法 来源:琴水玉 , www.cnblogs.com/lovesqcc/p/9478678.html 程序员共读整理发布,转载请 ...
- java中的排序方法_Java中8种常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...
最新文章
- java initcause_initCause()是什么意思
- mysq对存在null值的字段排序
- java static变量销毁_JAVA里static 变量在程序执行结束后是否被消毁
- java 在线答疑系统_基于java 在线答疑系统-需求分析与概念原型
- 2019蓝桥杯省赛---java---A---4(迷宫)
- Linux挂载点和文件系统类型介绍
- python文件数据类型_Python核心数据类型——文件
- 韭菜的自我修养-认知篇
- 合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)
- Android轉檔案到iphone,在 Mac 上要如何存取 Android 手機中的檔案,傳輸檔案沒問題...
- 发那科机器人override指令_发那科机器人如何改变自动的运行速度,为什么按加减后,焊接完成又变回原来的速度...
- linux 串口驱动
- MagicDraw二次开发过程
- 十分钟学会如何用Python处理CSV文件
- php 万网域名查询接口
- Windows 下编译 OpenSSL
- Delphi 汇编学习(八)--- 图像水平镜像垂直镜像的极致优化
- 知网 万方 论文免费下载方法
- 微博营销和软文营销的价值
- TP TN FP FN
热门文章
- 爆火“捏脸”APP崽崽ZEPETO,如何开启虚拟世界的社交IP?
- 互联网1分钟 | 0121 Vlog陌生人社交APP「自言」为年轻人打造生活视频分享平台;周鸿祎:智能设备要警惕“海豚音攻击”...
- Spring框架中的9种设计模式汇总
- 【转】C++调用Matlab的.m文件
- 第三章 经典场景设计
- oracle11g安装成功
- 项目案例分享四:DC升级后Sysvol停止复制,日志报13508
- CA自签证书的颁发及应用
- 7.2 极大似然估计
- docker+jenkins+maven+svn