我被要求回答一个字符串数组的问题,将左侧的数组元素移动到指定的位置。 问题如下:
String str[]={"A", "B","C","D","E","F"};
答案应如下:
String str[]={"D","E","F","A", "B","C",};
如何使用Java String?
答案 0 :(得分:1)
我不会占用你太多时间..
解决方案:
简单来说,我们想到的方法是先输入数组中的元素,然后移动每个元素,直到我们的谓词输出到来。
但是如果您想要更有效的解决方案,那么 与其简单的思考,不如直接以移位的形式存储数组元素。
for(int i=0;i<array.length;i++){
//take input in shifted form
array[ (i + distance) % array.length ] = sc.next().charAt(0);
//for distance read below
//sc is Scanner object
// array is the name of the array
}
距离
如果你想要右移操作,那么它将是正的(即 int distance=2 )
如果你想要左移操作,那么它将是负数 如果你想避免它,那么在代码中你可以这样做。
array[ (i-distance) % array.length ] = sc.next().charAt(0);
答案 1 :(得分:0)
您可以执行类似
的操作String str[]={"A", "B","C","D","E","F"};
int shifby= 3;
for (int i = 0; i < shifby; i++) {
for (int j = str .length - 1; j > 0; j--) {
String temp = str [j];
str [j] = str [j - 1];
str [j - 1] = temp;
}
}
//Printing array
for (int j=0;j <= str .length - 1; j++) {
System.out.println((str[j]));
}
// System.out.println(Arrays.toString(str));
}
答案 2 :(得分:0)
这是我能做到的最短路!
String str[] = {"A", "B","C","D","E","F"};
public static String[] shiftLeft(String[] arr, int n){
String newArray = new String[shiftLeft.length];
for(int i = 0; i < shiftLeft.length; i++){
newArray[i] = arr[(i + n) % (shiftLeft.lenght + 1)];
}
return newArray;
}
要使用它,您可以:
str = shiftLeft(str, 3);