Javaは、文字列のフリップを達成します

public class StringReverse {
 /*一共写了三个函数func1 func2 func3
  * 时间: 2019年9月12日9:00
  * fuc1用的反向输出到一个新的字符串中进行拼接
  * fuc2第一个和最后一个字符交换,第二个和倒数第二个字符进行交换,依次类推实现翻转
  * fuc3用递归函数进行翻转。递归在初学者中比较难理解,可以一步步的拆开,手动运行代码,进行理解。
  * 为什么函数用static?静态函数不用new直接调用就行,这叫做类函数
  * */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String string1 = "my name is jack";
  //func1(string1); 
  //func2(string1);
  func3(string1, 0);//如果调用func1 就把该行注释,把func1这一行调用注释去掉就行
 }
 
 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上一行++进入下一个递归,但是我要打印当前的一个字符
            //所以必须--一下就会正常,不然的话第一个字符会不显示,最后会多显示一个字符造成数组溢出
            //可以删掉--试试。
  }
 }
}

おすすめ

転載: www.cnblogs.com/realwuxiong/p/11510930.html
おすすめ