《剑指Offer》左旋转字符串(Java 实现)

风格不统一 提交于 2020-02-03 23:47:05

一、题目

1.1 题目描述

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

1.2 题目链接

  • 《牛客网》:左旋转字符串

二、实现代码

public class Solution {
    public String LeftRotateString(String str,int n) {
        
        if(str.length() <= n) return str;
        char[] chars = str.toCharArray();
        reverse(chars, 0, n-1);
        reverse(chars, n, str.length()-1);
        reverse(chars, 0, str.length()-1);
        return new String(chars);
    }
    private void reverse(char[] chars, int i, int j) {
        while(i < j) swap(chars, i++, j--);
    }

    private void swap(char[] chars, int i1, int i2) {
        char temp = chars[i1];
        chars[i1] = chars[i2];
        chars[i2] = temp;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!