力扣-字符串-左旋部分字符串(像流水灯一样走到后面)

该文章介绍了如何使用Java编程语言,通过反转字符串的不同部分来实现特定的字符串操作。首先,整体反转字符串,然后分别反转首尾段,最后再对整个字符串进行一次反转,从而达到题目要求的效果。这种方法利用了StringBuilder类和字符数组进行翻转。

 解法:

借用了上一道题中所写的根据索引反转字符串的方法。

经过分析想要达到题中所给出的效果,我们可以先反转前面几个数,再反转后面几个数,最后一起反转就实现了想要的结果。

换个思路分析:全部反转,所想要反转的就到后面了,再分别把前面的反转调正,把后面的反转调正。

class Solution {
    public String reverseLeftWords(String s, int n) {
        StringBuilder sb=new StringBuilder();
        sb.append(s);
        reverseString(sb,0,n-1);
        reverseString(sb,n,s.length()-1);
        reverseString(sb,0,s.length()-1);
        String result=sb.toString();
        return result;
        
    }


     public  void reverseString(StringBuilder sb, int start, int end) {
        //反转字符串任意一部分
        String s = sb.toString();
        char[] chs = s.toCharArray();
        while (start <= end) {
            char temp = chs[start];
            chs[start] = chs[end];
            chs[end] = temp;
            start++;
            end--;
        }
        String result=new String(chs);
        sb.replace(0,s.length(),result);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值