1.题目
2.解法(三次翻转法)
public class Solution {
private char[] arr;
public void reverse(int begin, int end) {
char tmp;
// 交换字符的位置
while (begin < end) {
tmp = arr[begin];
arr[begin] = arr[end];
arr[end] = tmp;
// 移动位置
++begin;
--end;
}
System.out.println(arr);
}
public String LeftRotateString(String str, int n) {
int len = str.length();
if (str == null || n < 0 || n > len) {
return "";
}
/**
* 将n划分的两个字符串翻转,然后将整个字符串翻转,就可以获得左旋的字符串
*/
arr = str.toCharArray();
reverse(0, n - 1);
reverse(n, len - 1);
reverse(0, len - 1);
return new String(arr);
}
}
时间复杂度和空间复杂度都是O(n)