zoukankan      html  css  js  c++  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 <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);
     }
     
    }
    
  • 相关阅读:
    The Future of Middleware and the BizTalk Roadmap
    FW: How to spawn a process that runs under the context of the impersonated user in Microsoft ASP.NET pages
    Strips illegal Xml characters
    luogu P2280 激光炸弹(二维前缀和)
    luogu P2704 炮兵阵地(经典状态压缩DP)
    SP1716 GSS3 Can you answer these queries III (线段树维护最大连续子段和)
    二分图判定、匹配问题
    C++语法综合 | 基于char*设计一个字符串类MyString
    luogu P1044 火车进出栈问题(Catalan数)
    C++设计模式 | 三种设计模式基础
  • 原文地址:https://www.cnblogs.com/realwuxiong/p/11510930.html
Copyright © 2011-2022 走看看