• 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);
     }
     
    }
    
  • 相关阅读:
    解释器模式
    命令模式
    责任链模式
    代理模式
    享元模式
    外观模式
    装饰器模式
    组合模式
    过滤器模式
    js广告浮动
  • 原文地址:https://www.cnblogs.com/realwuxiong/p/11510930.html
Copyright © 2020-2023  润新知