zoukankan      html  css  js  c++  java
  • 字符串反转

    将 '123456' 字符串反转,把你能想到的方法都写下来。

    1. 利用 StringBuffer 或 StringBuilder 的 reverse 成员方法:

      // StringBuffer
      public static String reverse1(String str) {
        return new StringBuilder(str).reverse().toString();
      }

    2. 利用 String 的 toCharArray 方法先将字符串转化为 char 类型数组,然后将各个字符进行重新拼接:

      // toCharArray
      public static String reverse2(String str) {
        char[] chars = str.toCharArray();
        String reverse = "";
        for (int i = chars.length - 1; i >= 0; i--) {
          reverse += chars[i];
        }
        return reverse;
      }

    3. 利用 String 的 CharAt 方法取出字符串中的各个字符:

      // charAt
      public static String reverse3(String str) {
        String reverse = "";
        int length = str.length();
        for (int i = 0; i < length; i++) {
          reverse = str.charAt(i) + reverse;
        }
        return reverse;
      }

    4 利用递归

    public static String reverse(String originStr) {
                if(originStr == null || originStr.length() <= 1) {
                    return originStr;
                }    
                return reverse(originStr.substring(1)) + originStr.charAt(0);
            }

          return reverse(originStr.substring(1)) + originStr.charAt(0);这行语句中,originStr.charAt(0)是将originStr这个字符串的
    第一位拿出来;
    而reverse(originStr.substring(1))中的originStr.substring(1)表示把originStr这个字符串的索引为1及之后的字符(也就是originStr字符串
    的第二个字符以后的子串,即"23456")拿出来。所以,执行一次递归后,“123456”字符串被分解为“23456”+‘1’。
    由于return reverse(originStr.substring(1)) + originStr.charAt(0);这行语句中,reverse方法的存在,执行第二次递归,此时
    originStr=“23456”,所以执行完第二次递归后,“23456”分解为“3456”+‘2’。
    ...依次类推,最后一次调用reverse方法时,也就是originStr = "6",可以看出字符串"6"满足if(originStr == null || originStr.length() <= 1)
    中的第二个条件,所以执行if条件下的语句,
    也就是返回originStr,即字符串"6"。所以整个调用栈就依次返回“6”+‘5’+‘4’+‘3’+‘2’+‘1’ = “654321”。
    最后,控制台输出打印“654321”。

  • 相关阅读:
    F5 BIG-IP之一前期随笔(应用交付网络产品)
    F5 BIG-IP LTM负载均衡策略
    OA-APP增加空间
    如何在Windows服务器上新建一个Powershell.ps1的定时任务
    领益科技:查询AD中被锁定的账号并进行解锁
    使用Python创建简单的HTTP和FTP服务器
    Mysql binlog日志太多,占用大量磁盘空间该如何正确处理
    【vspher运维】ESXI 日志文件
    【vsphere运维】ESXI命令行操作虚拟机
    内容图片切换
  • 原文地址:https://www.cnblogs.com/hup666/p/13211304.html
Copyright © 2011-2022 走看看