标签:
问题描述
定义字符串的左旋转操作:将字符串前面的若干个字符移动到字符串的尾部。
例如,字符串“abcdef”左旋转2位得到“cdefab”。要求实现的算法时间复杂度为O(n),常数级空间复杂度。
解决思路
整体翻转+部分翻转
程序
public class LeftRotateString {
public void leftRotate(char[] c, int k) {
if (c == null || c.length == 0) {
return;
}
reverse(c, 0, c.length - 1);
reverse(c, 0, c.length - k - 1);
reverse(c, c.length - k, c.length - 1);
}
private void reverse(char[] c, int i, int j) {
while (i < j) {
char tmp = c[i];
c[i] = c[j];
c[j] = tmp;
++i;
--j;
}
}
}
标签:
原文地址:http://www.cnblogs.com/harrygogo/p/4634893.html