剑指offer-----左旋转字符串

1、题目描述

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

2、思路

第一步:将字符串分为两部分,第一部分使要左旋的字符,第二部分是剩余的字符。将这两部分的字符分别翻转。

第二步:翻转整个字符串。

3、代码实现

public class Solution {
    public String LeftRotateString(String str,int n) {
        if(str.length() == 0){
            return "";
        }
        StringBuffer buffer1 = new StringBuffer(str);//将String转换为StringBuffer
        StringBuffer buffer2 = new StringBuffer(str);
        StringBuffer buffer = new StringBuffer();
        buffer1.delete(0,n);//将字符串的前n个字符删除
        buffer2.delete(n,str.length());//将字符串中n之后的字符删除
        buffer.append(buffer1.toString()).append(buffer2.toString());//将两个字符串剩余的部分相连
        return buffer.toString();//将StringBuffer转换为String
        
    }

}

注:该代码不是用上述的方法实现,而是用比较简单的,直接将字符串的前一部分和后一部分交换位置。



扫描二维码关注公众号,回复: 1865487 查看本文章


猜你喜欢

转载自blog.csdn.net/g1607058603/article/details/80877341