原创:字符串和语句逆转的几种方式,可以任意组合。
作者:Jeremy-Zhang
时间:2012/2/29
地点:网安实验室
//第一种采取中间变量的逆转字符串
public class StringReverse{
public static void main(String[] args) {
char[] a = {'a','b','c','d','e'};
for(int i=0;i<a.length/2;i++){
char temp ;
temp = a[i];
a[i] = a[a.length-i-1];
a[a.length-i-1] = temp;
}
System.out.println(a.length);
System.out.println(a);
}
}
//第二种采取中间变量的逆转字符串
public class StringReverse2 {
public static void main(String[] args){
char[] a = {'a','b','c','d'};
Reverse(a, 0, a.length-1);
}
public static void Reverse(char[] array,int begin,int end){
while(end > begin){
char temp;
temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
System.out.println(array);
}
}
//第三种不采取中间变量的字符串逆转,采取异或操作
public class StringReverse1 {
public static void main(String[] args) {
char[] a = {'a','b','c','d','e'};
for(int i=0;i<a.length/2;i++){
a[i] = (char) (a[i] + a[a.length-i-1]);
a[a.length-i-1] = (char) (a[i] - a[a.length-i-1]);
a[i] = (char) (a[i] - a[a.length-i-1]);
}
System.out.println(a.length);
System.out.println(a);
}
}
//要求把This is a man boy 逆序为boy man a is This
//第一步把每个单词逆转,第二步把整个数组逆转。
public class StringReverse3 {
public static void main(String[] args){
char[] a = {'T','h','i','s',' ','i','s',' ','a',' ','m','a','n',' ','b','o','y','\0'};
int begin = 0;
int end = 0;
while(a[end] != '\0'){ //遍历数组
if(a[end] == ' ' ){
Reverse(a, begin, end-1);//翻转每个单词
begin = end + 1; //重新设置起点的位置
}
end++;
}
Reverse(a, begin, end-1);//逆转最后一个单词
Reverse(a, 0, a.length-1);//整个数组逆转,即可得到结果
System.out.println(a);
}
public static void Reverse(char[] array,int begin,int end){
while(end > begin){
char temp;
temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
//System.out.println(array);
}
}