java实现字符串翻转
public class StringReverse {
/*一共写了三个函数func1 func2 func3
* 时间: 2019年9月12日9:00
* func1用的反向输出到一个新的字符串中进行拼接
* func2第一个和最后一个字符交换,第二个和倒数第二个字符进行交换,依次类推实现翻转
* func3用递归函数进行翻转。递归在初学者中比较难理解,可以一步步的拆开,手动运行代码,进行理解。
* func4也是递归函数,但是比func3写的更加漂亮
* 为什么函数用static?静态函数不用new直接调用就行,这叫做类函数
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
String string1 = "my name is hailey";
//func1(string1);
//func2(string1);
//func3(string1, 0);//如果调用func1 就把该行注释,把func1这一行调用注释去掉就行
System.out.println(func4(string1));
}
static void func1(String string1){//反向输出
String string2 = "";
for(int i = string1.length()-1; i >=0 ; --i) {//倒着读取每个字符。然后拼接
string2+=string1.charAt(i);
}
System.out.println(string2);
}
static void func2(String s){//第一个字符和最后一个互换,第二个和倒数第二个互换,,依次类推,实现翻转
char []ss = s.toCharArray();//将string类型转化为char数组类型
char sss; //暂存空间
for(int i = 0,j = s.length()-1; i <j; i++,j--){
sss = ss[i];
ss[i] = ss[j];
ss[j] = sss; //典型的两个数值交换(需要第三个空间)
}
for(int i = 0; i < ss.length; i++){
System.out.print(ss[i]);
}
}
static void func3(String s, int position){//初始化position为0 递归函数实现翻转。
if(position < s.length()){//这里可以去看看堆栈,就是类似堆栈先进后出(LIFO)
func3(s, ++position);//队列是先进先出(FIFO)
System.out.print(s.charAt(--position));//这里为什么要--,因为position上一行++进入下一个递归,但是我要打印当前的一个字符
//所以必须--一下就会正常,不然的话第一个字符会不显示,最后会多显示一个字符造成数组溢出
//可以删掉--试试。
}
}
static String func4(String s){
if(s.isEmpty()) return s;
return func4(s.substring(1))+s.charAt(0);
}
}
java实现字符串翻转的更多相关文章
- 【Java笔试】OYO校招Java工程师|牛客平台,算法:字符串翻转。附选择题解析
文章目录 1.Java笔试算法题:字符串翻转 2.单选题: 2.1.同一进程下的多个线程可以共享哪一种资源:data section 2.2.一个树形的叶结点在前序遍历和后序遍历下,可以相同的相对位置 ...
- Java常量字符串String理解
Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用 "eq ...
- Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0
课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值 String str=& ...
- java截取字符串中的数字
java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...
- 三张图彻底了解Java中字符串的不变性
转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...
- java中字符串的非空判断
问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...
- java中字符串String 转 int(转)
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
- Java:字符串类String的功能介绍
在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...
- Java空字符串与null的区别和判断字符串是否为空的方法
Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...
随机推荐
- HDU 1969 Pie [二分]
1.题意:一项分圆饼的任务,一堆圆饼共有N个,半径不同,厚度一样,要分给F+1个人.要求每个人分的一样多,圆饼允许切但是不允许拼接,也就是每个人拿到的最多是一个完整饼,或者一个被切掉一部分的饼,要求你 ...
- 35.python之事件驱动模型
转载:https://www.cnblogs.com/yuanchenqi/articles/5722574.html 事件驱动模型 上节的问题: 协程:遇到IO操作就切换. 但什么时候切回去呢?怎么 ...
- java中把某个字符串中的单引号替换成双引号
String regexp = "\'";String str = "'good'";System.out.println("替换前:" + ...
- 数据导出至excle
ASP.NET MVC导出Excel 首先下载 NPOI.dll 引用到项目中 建议下载地址:http://download.csdn.net/detail/pukuimin1226/5851747 ...
- cocos2dx Vec2
//SE是坐标重叠部分 // returns true if segment A-B intersects with segment C-D. S->E is the overlap part ...
- 【题解】CF741D(DSU on TREE)
[题解]CF741D(DSU on TREE) 写一写这道题来学习学习模板 用二进制来转换一下条件,现在就是要求一下\(lowbit(x)=x\)的那些路径了. DSU on TREE 是这样一种算法 ...
- 从零开始安装Redis 集群(Linux CenOS7)
从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...
- 学会python正则表达式就是这么简单
一前言 本篇文章带大家快速入门正则表达式的使用,正则表达式的规则不仅适用python语言,基本大多数编程语言都适用,在日常使用中极为广泛,读者们有必要学好正则表达式.看完这篇文章,读者们要理解什么是正 ...
- [转]C#中的abstract 类和方法
转:https://www.cnblogs.com/zzy2740/archive/2005/09/20/240808.html C#中的abstract类不能被实例化,他只提供其他类的继承的接口 u ...
- MySQL保存 emoji 表情(微信昵称表情)
问题分析 在微信开发过程中,总是会遇到带有emoji表情昵称的微信用户无法自动登录的问题. 后台代码抛出类似下面的异常信息. java.sql.SQLException: Incorrect stri ...