Java简单的算法题目(数组左移,右移 几位)

我朋友的一道面试题  看上去挺简单的 。。。。

Java简单的算法题目(数组左移,右移 几位)_第1张图片

 

我用的是基础的方法 

难点:二维数组,数组 的左移动

思路: 最后一位 与目标位替换,如果是 右移动的话 则第一位与目标位 替换

Java简单的算法题目(数组左移,右移 几位)_第2张图片

左移动:

for (int i = arr.length - 1; i > 0; i--) {
    char temp = arr[arr.length - 1];
    arr[arr.length - 1] = arr[i - 1];
    arr[i - 1] = temp;
}

右移动:

for (int i = 1; i < arr.length; i++) {
    char[] temp = arr[0];
    arr[0] = arr[i];
    arr[i] = temp;
}

PS:数组与 String 虽然都是引用类型 但还是 有区别的,两者作为方法中 传入的参数; String类型 会新建一个栈帧,之后对该字符串的 操作,不会对传入的字符串有任何影响; 而数组 会有影响,对象,集合也是如此;

 

我去 -- 短短100行 写了1个半小时 ,基础都不会了。。。。

package study;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Demo2 {



    public static void main(String[] args) {

        char[][] arrays = {{'A','B','C','D','E','F','G','H','I'},{'J','K','L','M','N','O','P','Q','R'},
                {'S','T','U','V','W','X','Y','Z','*'}};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一行: tip:日期");
        String param =  scanner.nextLine();
        System.out.println("请输入第二行: tip: 你所说的话");
        String message =  scanner.nextLine().toUpperCase(); //转为大写

        String[] paramArray = param.split("\\s");
        char[] messageArray = message.toCharArray();

        int month = Integer.parseInt(paramArray[0])-1;
        int day = Integer.parseInt(paramArray[1])-1;
        // 一些 数据校验 我就不写了  输入的都是合格的

        //位移二维数组
        handleArrayTwo(arrays,month);

        for(int i=0;iresultList = new ArrayList();

        GOOTOO:for(int i=0;i0) {
            for (int i = arr.length - 1; i > 0; i--) {
                char temp = arr[arr.length - 1];
                arr[arr.length - 1] = arr[i - 1];
                arr[i - 1] = temp;
            }
            --count;
        }

    }

    /**
     * 位移二维数组方法
     * @param arr 目标数组
     * @param count 左移的次数
     * @return 移动好的数组
     */
    public static  void handleArrayTwo(char[][] arr,int count){

        while(count>0) {
            for (int i = arr.length - 1; i > 0; i--) {
                char[] temp = arr[arr.length - 1];
                arr[arr.length - 1] = arr[i - 1];
                arr[i - 1] = temp;
            }
            --count;

        }

    }

}

 

你可能感兴趣的:(Java基础/API)