Read N Characters Given Read4 II - Call multiple times

来源:互联网 发布:矩阵测光模式 编辑:程序博客网 时间:2024/04/28 12:28

同I,此题还是最重要的还是得能准确理解题意,然后对着I的解法稍作修改,做的时候先把I写一遍,再改成II,这是最好的。

/* The read4 API is defined in the parent class Reader4.      int read4(char[] buf); */public class Solution extends Reader4 {    Queue<Character> queue = new LinkedList<>();    /**     * @param buf Destination buffer     * @param n   Maximum number of characters to read     * @return    The number of characters read     */    public int read(char[] buf, int n) {        if (n == 0) {            return 0;        }        char[] temp = new char[4];        boolean eof = false;        int readCount = 0;                /////////////////        while (!queue.isEmpty() && readCount < n) {            buf[readCount++] = queue.poll();        }        /////////////////                while (!eof && readCount < n) {            int count = read4(temp);            if (count < 4) {                eof = true;            }            /////////////////            int finalCount = Math.min(count, n - readCount);            int i = 0;            /////////////////            for (; i < finalCount; i++) {                buf[readCount++] = temp[i];            }            /////////////////            if (finalCount < count) {                for (; i < count; i++) {                    queue.offer(temp[i]);                }            }            /////////////////        }        return readCount;    }}


0 0