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

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

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

     

   }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值