java 字符翻转_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

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值