Java 字符串反转:七种字符串反转的方法

import java.util.Stack;

public classStringReverse{

    /**
* @param s
    * @return
    */
    publicstatic String reverse1(String s){
        int length= s.length();
        if(length <= 1)
            return s;
        String left= s.substring(0, length / 2);
        String right= s.substring(length/ 2, length);
        return reverse1(right)+ reverse1(left);
    }

    /**
    * @param s
    * @return
    */
    publicstatic String reverse2(String s){
        int length= s.length();
        String reverse= "";
        for(int i= 0; i< length; i++){
            reverse = s.charAt(i)+ reverse;
        }
        return reverse;
    }

    /**
     * @param s
    * @return
    */
    publicstatic String reverse3(String s){
        char[] array= s.toCharArray();
        String reverse= "";
        for(int i= array.length- 1; i>= 0; i--){
            reverse += array[i];
        }
        return reverse;
    }

    /**
    * @param s
    * @return
    */
    publicstatic String reverse4(String s){
        returnnew StringBuffer(s).reverse().toString();
    }

    /**
    * @param orig
    * @return
    */
    publicstatic String reverse5(String orig){
        char[] s= orig.toCharArray();
        int n= s.length- 1;
        int halfLength= n /2;
        for(int i= 0; i<= halfLength; i++){
            char temp= s[i];
            s[i]= s[n- i];
            s[n- i]= temp;
        }
        returnnew String(s);
    }

    /**
    * @param s
    * @return
    */
    publicstatic String reverse6(String s){
        char[] str= s.toCharArray();
        intbegin = 0;
        intend = s.length()- 1;
        while(begin< end){
            str[begin]= (char)(str[begin]^ str[end]);
            str[end]= (char)(str[begin]^ str[end]);
            str[begin]= (char)(str[end]^ str[begin]);
            begin++;
            end--;
        }
        returnnew String(str);
    }

    /**
    * @param s
    * @return
    */
    publicstatic String reverse7(String s){
        char[] str= s.toCharArray();
        Stack<Character> stack= newStack<Character>();
        for(int i= 0; i< str.length; i++){
            stack.push(str[i]);
        }
        String reversed= "";
        for(int i= 0; i< str.length; i++)
reversed += stack.pop();
        return reversed;
    }


    /**
    * @param args
    */
    publicstatic void main(String[] args) {
        System.out.println(reverse1("abcdefg"));
        System.out.println(reverse2("abcdefg"));
        System.out.println(reverse3("abcdefg"));
        System.out.println(reverse4("abcdefg"));
        System.out.println(reverse5("abcdefg"));
        System.out.println(reverse6("abcdefg"));
        System.out.println(reverse7("abcdefg"));
    }

}


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值