剑指 Offer 58 - II. 左旋转字符串

在这里插入图片描述

class Solution {
    public String reverseLeftWords(String s, int n) {
        // 1、获取字符串的长度
        int length = s.length();
        // 2、把字符串转换为字符数组的形式
        char[] chars = s.toCharArray();

        // 3、把字符数组的所有字符反转
        // 即  a b c d e f g 
        // 变成了 g f e d c b a
        reverse(chars, 0, length - 1);

        // 4、再反转前 length - n 个字符
        // 即  g f e d c b a
        // 变成了 c d e f g b a
        reverse(chars, 0, length - n - 1);

        // 5、再反转剩余的字符   
        // 即  c d e f g b a
        // 变成了 c d e f g a b
        reverse(chars, length - n, length - 1);

        // 6、最后返回字符串结果就可以
        return new String(chars);
    }

    // 借助临时变量的方法,把字符数组进行反转
    private void reverse(char[] chars, int start, int end) {
        // 从头到尾变量所有的字符
        while (start < end) {
            // 定义一个临时变量用来保存字符数组的开始字符
            char temp = chars[start];

            // 将首尾字符交换
            chars[start] = chars[end];

            // 将首尾字符交换
            chars[end] = temp;

            start++;
            end--;
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值