43. 左旋转字符串

穿精又带淫゛_ 提交于 2019-12-27 05:14:49

题目描述

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

1. 字符串拼接

代码实现

/**
 * @Classname Solution
 * @Description TODO
 * @Date 2019/12/22 13:23
 * @Author SonnSei
 */
public class Solution {
    public String LeftRotateString(String str,int n) {
        if(str == null || str.length()==0 || n<0) return "";
        if(str.length()==1 || n == 0)return str;
        // 注意这里是n%str.length(),有一次写反了
        int move = n%str.length();
        return str.substring(move)+str.substring(0,move);
    }
}

复杂度分析

时间复杂度:O(1){O(1)}
空间复杂度:字符串的substring也会生成新的对象,字符串有k{k}位的话,空间复杂度可以看做是O(k){O(k)}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!