当前位置:编程学习 > JAVA >>

在java里reverse 这个的算法怎么描述啊

补充:reverse 这个反向的方法是怎么样描述的

例如: “abc” 反向成“cba”

是怎么运算的

追问:对啊·!那应该怎么描述这个呢!~

答案:首先要明确的是

String这个类里面根本就没有reverse()这个方法 它是StringBuffer类的方法

 

算法多种多样

关键是理解原理

这个算法的实现并不复杂

下面是我自己写的一个算法

public class StringUtils{

 

 /**

  *隐藏构造函数 避免实例化这个类的对象

  *对于只有方法 没有任何成员变量需要维护的辅助性类

  *实例化这个类的对象显然没有任何意义

  */

 private StringUtils();

 /**

  *反转字符串

  */
 public static String reverse(String s){
  //若参数为空或去掉两边空格为"" 返回值为参数自身
  if (s==null||s.trim()=="") {
   return s;
  }
  //获得字符串的字符数组
  char[] chs = s.toCharArray();
  //获得字符串的长度
  int length = s.length();

  //循环交换数组中对称位置的字符
  for (int i = 0; i < length/2; i++) {
   char c = chs[i];
   chs[i]=chs[length-1-i];
   chs[length-1-i]=c;
  }

//返回由交换过的数组构成的新字符串
  return new String(chs);
 }
 
 public static void main(String[] args) {
  System.out.println(reverse("FVVWJ"));
 }
}

这是一个方法,你所说的应该是类型String的一个方法,reverse()是用来倒置该字符串的意思。
reverse()方法源码
    public AbstractStringBuilder reverse() {
 boolean hasSurrogate = false;
 int n = count - 1;
 for (int j = (n-1) >> 1; j >= 0; --j) {
     char temp = value[j];
     char temp2 = value[n - j];
     if (!hasSurrogate) {
  hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
      || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
     }
     value[j] = temp2;
     value[n - j] = temp;
 }
 if (hasSurrogate) {
     // Reverse back all valid surrogate pairs
     for (int i = 0; i < count - 1; i++) {
  char c2 = value[i];
  if (Character.isLowSurrogate(c2)) {
      char c1 = value[i + 1];
      if (Character.isHighSurrogate(c1)) {
   value[i++] = c1;
   value[i] = c2;
      }
  }
     }
 }
 return this;
    }

上一个:求问JAVA是怎么回事??
下一个:谁帮忙提供一些java的 编程题目?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,