剑指offer--左旋转字符串

本文介绍了一种使用字符串模拟循环左移(ROL)指令的算法实现。通过三个步骤:首先将字符串转换为字符数组,接着分别反转前n个字符和剩余字符,最后整体反转,实现了字符串的循环左移。文章提供了详细的Java代码示例。
摘要由CSDN通过智能技术生成

题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

思路:1. 先进行一个边界处理,把字符串转成字符数组
2.先反转前n个,然后反转后面的
3.整体反转。
4.字符数组转字符串输出

public class Solution {
    public String LeftRotateString(String str,int n) {
        //如果字符串为空,字符长度小于2,或者要转的字符串长度小于左边
        if(str == null || str.length()<2 ||str.length()<=n)
        {
        	return str;
        }
        char[] charArray = str.toCharArray();
        //翻转前n个
      reverse(charArray,0,n-1);
     //翻转后面的
      reverse(charArray,n,charArray.length-1);
      //整体翻转
      reverse(charArray,0,charArray.length-1);
      return String.valueOf(charArray);
    }
    //反转字符
	private void reverse(char[] array,int start,int end)
	{ 
        //定义空字符用于交互
		char temp = ' ';
        //从起始位置
		while(start < end)
		{ 
            //把开始交换。
             //把开始交换。
            //a->kong
			temp = array[start];
             //c->a并且移动
			array[start++] = array[end];
            a->c.交换了ac,并且更新下标
			array[end--] = temp;
		}
	}
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据学习爱好者

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值