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

    你可以用相关的接口来定义这道题,里面有一个未实现的方法。

    public interface Reverser {

      public String reverse(String str);

    }

    在Java中,最好的实现就是用JDK中StringBuffer的反转方法,它不仅速度快,效率高,而且还知道如何处理unicode代理对(surrogate pairs)。其它方案基本上都可以忽略掉。

    public class JdkReverser implements Reverser {

           public String reverse(String str) {

                if ((null == str) || (str.length() <= 1)) {

                    return str;

                }

                return new StringBuffer(str).reverse().toString();

            }

    }

    处理问题:

    问他代码中什么地方有bug,即使没有。或者代码怎么会报错,他的答案至少可以引出一个讨论关于如何处理空值的话题来。

    返回null

    返回“”

    抛出NullPointerException

    抛出IllegalArgumentException

     第二个讨论的焦点是是如何去优化解决方法,像返回字符串本省“”,长度为1的字符串(本省就是反转)

     更多的方案:

    在适当的位置调动StringBuffer:

    public String reverse(String str) {

                if ((null == str) || (str.length()  <= 1 )) {

                    return str;

                }

                StringBuffer result = new StringBuffer(str);

                for (int i = 0; i < (str.length() / 2); i++) {

                    int swapIndex = str.length() – 1 – i;

                    char swap = result.charAt(swapIndex);

                    result.setCharAt(swapIndex, result.charAt(i));

                    result.setCharAt(i, swap);

                }

                return result.toString();

            }

    采用调用数组的方法:

    public String reverse(String str) {

              if ((null == str) || (str.length() <= 1)) {

                  return str;

              }

              char[] chars = str.toCharArray();

              int right = chars.length – 1;

              for (int left = 0; left < right; left++) {

                  char swap = chars[left];

                  chars[left] = chars[right];

                  chars[right--] = swap;

              }

              return new String(chars);

          }

    SringBuffer追加的方法:

    public String reverse(String str) {

              if ((null == str) || (str.length() <= 1)) {

                  return str;

              }

              StringBuffer reverse = new StringBuffer(str.length());

              for (int i = str.length() – 1; i >= 0; i–) {

                reverse.append(str.charAt(i));

              }

              return reverse.toString();

          }

      }

  • 相关阅读:
    Spring Boot整合RabbitMQ
    程序员都在用的 IDEA 插件(不断更新)
    Skywalking03:Skywalking本地调试
    Skywalking01:Skywalking介绍
    Skywalking05:在Skywalking RocketBot上添加监控图表
    Skywalking04:扩展Metric监控信息
    文档,不仅仅是文档。
    pyecharts的绘图原理详解
    JS的新趋势State of JS 2020(来自网络)
    花半秒钟看透事物本质
  • 原文地址:https://www.cnblogs.com/wuxiang/p/3541306.html
Copyright © 2011-2022 走看看