如题,假设有数组char[] sz = {'A', 'B', 'C', 'D', 'E', 'F'};
,请写一个函数fun(char[] sz,int n),对传入的数组的元素进行旋转,例如:当n=1时,sz的各元素向右旋转一位,变为:FABCDE;当n=-1时,sz的各元素向左旋转1位,变为BCEDEFA;当n=3时,sz变为DEFABC,
请写出fun(char[] sz,int n)方法,
分析:其实这题是比较简单的,找张纸 ,找支笔 画一下 就能明白了, 这里我直接给出代码,不是很高深,就是用最普通的想法写出来的,如下:
public class Test {
public static void main(String[] args) {
char[] sz = {'A', 'B', 'C', 'D', 'E', 'F'};
char[] s3 = fun(sz, 0);
for (int i3 = 0; i3 < s3.length; i3++) {
System.out.println(s3[i3]);
}
}
private static char[] fun(char[] sz, int i) {
if (i == 0) {
return sz;
}
char[] sz2 = new char[sz.length];
int n = (i < 0 ? -i : i) % sz.length;
System.out.println(n + "");
if (n == 0) {
return sz;
} else {
if (i < 0) {
for (int i1 = 0; i1 < sz.length; i1++) {
int from = i1 + n;
if (from < sz.length) {
sz2[i1] = sz[from];
} else {
sz2[i1] = sz[from - sz.length];
}
}
} else {
for (int i2 = 0; i2 < sz.length; i2++) {
int end = i2 - n;
if (end >= 0) {
sz2[i2] = sz[end];
} else {
System.out.println(n + "n--" + "i2----" + sz[sz.length + end - 1]);
sz2[i2] = sz[sz.length + end];
}
}
}
}
return sz2;
}
}