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. 左旋转字符串