左旋转字符串

这里写图片描述

思路

以”abcdeftg”为例,我们可以把它分为两个部分,由于想把它的前两个字符一道后面,我们就把前面两个字符分到第一部分,把后面的所有字符都分到第二个部分。我们先反转这两部分,于是就得到了“bagfedc",接下来我们再翻转整个字符串,得到了”cdefgab"刚好就是把原始字符串左旋转2位的结果。
这里写图片描述


public class LeftRotateString {
    //反转字符
    public String reverse(String str){
        char[] arr = str.toCharArray();
        for(int i = 0;i<(arr.length+1)/2;i++){
            char temp = arr[i];
            arr[i] = arr[arr.length-i-1];
            arr[arr.length-i-1]= temp;
        }
        return String.valueOf(arr);
    }
    //先反转两部分,然后整个反转
    public void leftRotateString(String sentence,int index){
        if(sentence == null || index >sentence.length() || index <0)
            return;
        String[] splitStrings = {sentence.substring(0, index),sentence.substring(index, sentence.length())};
        String resultBuffer = "";
        for(int i =0;i<splitStrings.length;i++){
            splitStrings[i] =reverse(splitStrings[i]);
            resultBuffer+=splitStrings[i];
        }

        System.out.println(reverse(resultBuffer));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值