手记

剑指offer-----反转字符串

这个面试被问到过,我当时就用char和StringBuffer写出来了,面试官还问我有没有其它的,没写出来,

现在总结三种方法,仅供参考

  1. 利用字符数组,没两个做swap交换


  2.    public static  String reverse(String str) {

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

  4.             return str;

  5.         }

  6.         char[] chars = str.toCharArray();

  7.         int right = chars.length -1;

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

  9.             char swap = chars[left];

  10.             chars[left] = chars[right];

  11.             chars[right--] = swap;

  12.         }

  13.         return new String(chars);

  14.     }

2.StringBuffer的append方法

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();

    }

3.第三种方法思想跟第一种一样,也是做交换,调用了StringBuffer的setCharAt()方法

   public static String reverse(String str)

    {

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

             return str;

         }

    StringBuffer result=new StringBuffer(str);

    for(int i=0;i<(result.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 str.toString();

   

    }


1人推荐
随时随地看视频
慕课网APP