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);
} }

最新文章

  1. Elasticsearch——分词器对String的作用
  2. EF Core 1.0中使用Include的小技巧
  3. 在matlab和opencv中分别实现稀疏表示
  4. 一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现。
  5. ArcGIS三大文件格式解析
  6. Ubuntu 安装软件
  7. Android日常开发60条经验
  8. 在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结
  9. 如何在DJANGO里获取?带数据的东东,基于CBV
  10. 【玩转微信公众平台之六】 搭建新浪SAEserver
  11. Mac系统下安装PIL
  12. Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页
  13. android ExpandableListView实现不同的布局
  14. 超简单的jQuery前台分页,不需导包
  15. [转] netstat 查看TCP状态值
  16. 动态规划 - 213. House Robber II
  17. Cocos Creator 节点
  18. Delphi中的构造函数的override的问题
  19. Spring Boot 之 RESTfull API简单项目的快速搭建(一)
  20. HTML5 Canvas ( 创建图形对象 ) createImageData

热门文章

  1. javascript 闭包的理解(一)
  2. js实现php函数urlencode
  3. PHP四大主流框架的优缺点总结
  4. Java 8 访问接口的默认方法
  5. vue基础用法
  6. 【重学Node.js 第1&amp;2篇】本地搭建Node环境并起RESTful Api服务
  7. MyISAM与InnoDB的索引实现区别
  8. mysql主从之多线程复制
  9. vue 2.0以上怎么在手机中运行自己的项目
  10. 观察者模式的应用:Winform窗体之间传值