【题目描述】
subtring
时间复杂度: O(n)
空间复杂度:O(n)
【思路】
利用substring将[n : len]与 [0:n]拼接到 一起
class Solution {
public String leftRotateString(String str,int n) {
return str.substring(n, str.length()) + str.substring(0, n);
}
}
翻转
时间复杂度: O(n)
空间复杂度:O(n)
【思路】
1、先对整个字符串进行翻转,这样前n个字符就变成了后n个字符。
2 、然后对前 len - n个 和 后n个 两个部分分别进行翻转
由于Java中字符串S提让那个是不可修改的。一般都是转成数组进行操作的。所以无论如何都需要 O(n)的空间复杂度
class Solution {
//对字符串[start,end]进行翻转
String s;
public void reverse(int start, int end){
char c [] = s.toCharArray();
for(int i = start, j = end; i < j; i ++, j --)
{
char g = c[i];
c[i] = c[j];
c[j] = g;
}
s = new String(c);
}
public String leftRotateString(String str,int n) {
s = str;
int len = str.length();
reverse(0, len - 1);//对整个字符串进行翻转
reverse(0, len - n - 1); //对前 len - n个 和 后n个 两个部分分别进行翻转
reverse(len - n, len - 1);
return s;
}
}