字符串翻转(java)

1 递归,二分
    private static String reverse(String s) {
        int N = s.length();
        if(N <= 1) return s;
        String a = s.substring(0, N/2);
        String b = s.substring(N/2, N);
        return reverse(b) + reverse(a);
    }
2 StringBuilder内置函数reverse()
    public static String reverse(String str){
        return new StringBuffer(str).reverse().toString();
    }

实现原理:

    public AbstractStringBuilder reverse() {
        ...
        int n = count - 1;
        // j初始化,长度-2再算术右移一位 j = (count-2)/2
        // 偶数长度,遍历一半次数,对调替换
        // 奇数长度,遍历一半-1次数,对调替换,中间值不用替换
        for (int j = (n-1) >> 1; j >= 0; j--) {
            int k = n - j;
            char cj = value[j];
            char ck = value[k];
            value[j] = ck;
            value[k] = cj;
            ...
        }
        ...
        return this;
    }
3 顺序遍历倒序拼接/倒序遍历顺序拼接
4 利用栈的先入后出的特性

转载于:https://www.cnblogs.com/angelica-duhurica/p/10893876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值