在java里reverse 这个的算法怎么描述啊
补充:reverse 这个反向的方法是怎么样描述的例如: “abc” 反向成“cba”
是怎么运算的
追问:对啊·!那应该怎么描述这个呢!~
补充: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的 编程题目?