Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/

解题思路

方法一:append()方法

StringBuilder里面append方法可以截取字符串s中一部分

代码

class Solution {
    public String reverseLeftWords(String s, int n) {
        StringBuilder sb = new StringBuilder();
        sb.append(s,n,s.length());
        sb.append(s,0,n);
        return sb.toString();
    }
}

复杂度分析

  • 时间复杂度:O(1)
  • 空间复杂度:O(n)

方法二:常规做法

我们假设把字符串复制一遍,然后添加到该字符串后面,这样我们就可以从第n个位置开始,截取s的长度个数字符,就是答案,我们实际上不需要复制字符串,而是直接进行取模操作就行,有点像循环队列。

代码

class Solution {
    public String reverseLeftWords(String s, int n) {
        StringBuilder res = new StringBuilder();
         for(int i = n; i < n + s.length(); i++)
            res.append(s.charAt(i % s.length()));
        return res.toString();
    }
}

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

以上是关于Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 58 - II. 左旋转字符串

Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)

[LeetCode]剑指 Offer 58 - II. 左旋转字符串

剑指 Offer 58 - II. 左旋转字符串

[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II

LeetCode(剑指 Offer)- II. 剪绳子 II