按指定位置左移字符串数组

时间:2015-07-25 13:52:19

标签: java string

我被要求回答一个字符串数组的问题,将左侧的数组元素移动到指定的位置。 问题如下:

String str[]={"A", "B","C","D","E","F"};

答案应如下:

String str[]={"D","E","F","A", "B","C",};

如何使用Java String?

3 个答案:

答案 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);