问题描述
定义字符串的左旋转操作:将字符串前面的若干个字符移动到字符串的尾部。
例如,字符串“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; } } }
时间: 2024-11-10 01:06:45