我需要有关如何在Java中使用arraycopy方法的帮助。
我有一个字符数组,例如:
[a,b,c,d]
并且我想向右循环移位,例如,如果该循环移位是整数2,则字符将向右移位两个位置,结果:
[c,d,a,b]
我想知道如何使用arraycopy方法实现这一点。
在将数组向左移动一定次数时,我设法实现了它,如下所示:
System.arraycopy(sArray, leftShifts, leftShiftedArray, 0, n - leftShifts);
System.arraycopy(sArray, 0, leftShiftedArray, n - leftShifts, leftShifts);
我只是觉得很难做到正确。
谢谢
答案 0 :(得分:2)
旋转N
元素剩余的k
元素数组等效于N-k
元素右边的相同数组。因此,您要做的就是在公式中将leftShifts
替换为n - rightShifts
:
System.arraycopy(sArray, n - rightShifts, rightShiftedArray, 0, rightShifts);
System.arraycopy(sArray, 0, rightShiftedArray, rightShifts, n - rightShifts);