题目链接: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)