原创:字符串和语句逆转的几种方式,可以任意组合,java实现

来源:互联网 发布:西安行知中学怎么分班 编辑:程序博客网 时间:2024/06/01 17:34

原创:字符串和语句逆转的几种方式,可以任意组合。

作者: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);

     

   }

}